使用Spring MVC的JSP EL中的会话属性问题


问题内容

我试图使用JSP EL在jsp页面中显示会话属性“ userSession”,但它返回null(情况1)。但是,请求属性在EL表达式中正确显示。

相反,使用Java scriptlet的行为如情况2和3所示:

  1. <c:out value="${userSession}"/> \\返回null
  2. <c:out value='<%=request.getSession().getAttribute("userSession")%>'/> \\工作正常-返回会话属性
  3. <c:out value='<%=session.getAttribute("userSession")%>'/> \\抛出异常:找不到变量会话

情况3的异常可能与情况1的问题有关,例如由于某种原因无法识别会话变量,从而影响EL表达式。

我正在使用Spring MVC 2.5和JSTL 1.1.2。

我可以发布其他任何需要澄清的问题。


问题答案:

固定。问题出<%@ page session="false" %>在我的页面使用的include.jsp中找到的指令,该指令已从该全局位置中删除。

它防止jsp页面访问会话范围变量。因此仅<%=request.getSession().getAttribute("foo")%>在这种情况下有效…