我遇到过在Action类中设置属性的场景:
request.setAttribute("itemList", itemList); /* valid List item - confirmed */
在JSP上,我尝试在forEach
标记中使用它作为
<c:forEach items="${itemList}" var="individualItem">
<!-- rest of the code -->
它被评估为空项。但是我在这个标签之前添加了一个小小脚本:
<% List<MyItem> itemList = (List<MyItem>)request.getAttribute("itemList"); // evaluates as my valid item list
List<MyItem> itemList = (List<MyItem>)pageContext.getSession().getAttribute("itemList"); // evaluates as NULL
%>
这是否意味着我最好使用pageContext或session Attribute而不是在我的前端请求Attribute?或者有规则吗?
KR,
答案 0 :(得分:0)
规则:
这取决于您的要求,Session在整个会话中保持数据(即变量值)(即直到用户关闭浏览器或会话超时),而Request会在单个请求中保存数据,这包括情况当请求被重定向或分派时。
在您的示例中,pageContext.getSession()。getAttribute(“itemList”)返回null,因为您在请求中设置的属性不是会话,而是为什么EL代码返回null,我无法弄明白为什么。 ....可能是你在jsp中定义了名为'itemList'的局部变量,该变量为null,因此它首先读取它,检查answer here