将 HashMap 传递给 jsp
Passing HashMap to jsp
我正在尝试使用此 JSP 代码显示元素列表:
<c:forEach items="${themesContentMap}" var="entry">
<tr>
<td><input type="checkbox" value="${entry.key.getId()}"checked></td>
<td>${entry.key.getLibelle()}</td>
<td>${entry.value.getNom()}</td>
</tr>
</c:forEach>
由 java 代码提供:
HashMap<ThemeBean, CoursBean> themeContentMap = new HashMap<ThemeBean, CoursBean>();
for (ThemeBean theme : themeBeans) {
themeContentMap.put(theme, coursDAO.getCours(theme.getCours()));
}
LOG.debug("Found matching: " + themeContentMap);
request.setAttribute("themesContentMap", themeContentMap);
resp.sendRedirect(LIST_THEMES);
但是我的网页中没有任何内容,日志中也没有任何错误(调试显示正确的信息)。
请注意,我是 servlet 和 JSP 的初学者,所以我可能遗漏了一些明显的东西。
resp.sendRedirect(LIST_THEMES);
创建一个新请求,因此,先前的请求属性将丢失。
你必须在这里使用 RequestDispatcher
。
RequestDispatcher view = request.getRequestDispatcher("yourJspName");
view.forward(request, response);
通过这种方式,您将能够在 jsp 中访问您的请求属性。
您需要了解 difference between a request dispatcher and redirect
这是 请求调度程序 的工作方式:
这就是 response.sendRedirect() 的工作原理
sendRedirect()
将 header 发送回浏览器(302 HTTP 状态代码),
并且还包含要重定向到的资源的名称。所以这将是浏览器对资源的新请求。
您必须转发请求
requestDispatcher.forward(request, response);
Jsp 接受请求和那里的属性并进一步处理它。
我正在尝试使用此 JSP 代码显示元素列表:
<c:forEach items="${themesContentMap}" var="entry">
<tr>
<td><input type="checkbox" value="${entry.key.getId()}"checked></td>
<td>${entry.key.getLibelle()}</td>
<td>${entry.value.getNom()}</td>
</tr>
</c:forEach>
由 java 代码提供:
HashMap<ThemeBean, CoursBean> themeContentMap = new HashMap<ThemeBean, CoursBean>();
for (ThemeBean theme : themeBeans) {
themeContentMap.put(theme, coursDAO.getCours(theme.getCours()));
}
LOG.debug("Found matching: " + themeContentMap);
request.setAttribute("themesContentMap", themeContentMap);
resp.sendRedirect(LIST_THEMES);
但是我的网页中没有任何内容,日志中也没有任何错误(调试显示正确的信息)。
请注意,我是 servlet 和 JSP 的初学者,所以我可能遗漏了一些明显的东西。
resp.sendRedirect(LIST_THEMES);
创建一个新请求,因此,先前的请求属性将丢失。
你必须在这里使用 RequestDispatcher
。
RequestDispatcher view = request.getRequestDispatcher("yourJspName");
view.forward(request, response);
通过这种方式,您将能够在 jsp 中访问您的请求属性。 您需要了解 difference between a request dispatcher and redirect
这是 请求调度程序 的工作方式:
这就是 response.sendRedirect() 的工作原理
sendRedirect()
将 header 发送回浏览器(302 HTTP 状态代码),
并且还包含要重定向到的资源的名称。所以这将是浏览器对资源的新请求。
您必须转发请求
requestDispatcher.forward(request, response);
Jsp 接受请求和那里的属性并进一步处理它。