servlet代码:
HttpSession session = request.getSession(true);
session.setAttribute("mapCarBean", mapCarBean);
session.setAttribute("testing", mapCarBean.size());
response.sendRedirect("/sasha/jsp/main.jsp");
jsp代码:
<% System.out.println("was here"); %>
${sessionScope.testing}
<c:choose>
<c:when test="${not empty sessionScope.mapCarBean}">
found
</c:when>
<c:otherwise>
not found
</c:otherwise>
</c:choose>
<c:forEach items="${mapCarBean}" var="entry">
<ul>
<li>${entry.value.getName()}</li>
</ul>
</c:forEach>
&#34;在这里&#34;重定向到jsp后打印,但没有执行任何jstl标记,直到手动刷新页面。即使选择也没有被称为
注意:我已经尝试过sessionScope.mapCarBean,它有同样的问题
解决方案:
拔掉头发后我终于找到了问题。我使用的是AJAX帖子,不会重定向。由于某种原因,它会执行JSP标记,但没有别的。我不确定为什么会这样,但希望这对其他读这篇文章的人都有帮助。
答案 0 :(得分:1)
如果你的jsp中有这一行,请删除
<%@ page session="false" %>
它从页面中删除会话
答案 1 :(得分:0)
您是否在jsp中使用了这些代码;
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ page session="false"%>
在jsp中你可以编写$ {mapCarBean} .value.getName()而不用forEach