你如何检查Struts 2 jsp中的有效会话?

时间:2011-10-19 14:45:39

标签: session struts

我的所有页面都包含jsp,其中包括js文件,css文件等。这包括jsp也指向带有“”的会话。

在我的应用程序的最后一页上,该操作在HttpSession对象上执行session.invalidate。

因此,当我的应用程序的最后一页出现并运行“”时,由于会话失效,我收到以下错误

  

2011-10-19 10:30:59,134 WARN com.opensymphony.xwork2.ognl.OgnlValueStack - 在针对值堆栈计算表达式'#session.user.isWhatever()'时捕获异常   java.lang.IllegalStateException:getAttribute:会话已经失效       在org.apache.catalina.session.StandardSession.getAttribute(StandardSession.java:1062)       at org.apache.catalina.session.StandardSessionFacade.getAttribute(StandardSessionFacade.java:110)       在org.apache.struts2.dispatcher.SessionMap.get(SessionMap.java:165)       at ognl.MapPropertyAccessor.getProperty(MapPropertyAccessor.java:76)

我尝试过“#session neq null”来阻止错误显示,但这不起作用。

是否有用于阻止此错误的条件?如何在Struts 2的jsp中检查会话是否有效?

1 个答案:

答案 0 :(得分:0)

检查是否存在已知的会话值 - 在您的情况下,#session.user。您不应该进行明确的空检查,IIRC(可能是错误的)。根据应用程序中实际工作的方式,您还可以检查isNew,尽管这似乎不是必需的。

会话将“永远”为空 - 除非明确指示,否则只需点击JSP页面就会创建一个。