我的所有页面都包含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中检查会话是否有效?
答案 0 :(得分:0)
检查是否存在已知的会话值 - 在您的情况下,#session.user
。您不应该进行明确的空检查,IIRC(可能是错误的)。根据应用程序中实际工作的方式,您还可以检查isNew
,尽管这似乎不是必需的。
会话将“永远”为空 - 除非明确指示,否则只需点击JSP页面就会创建一个。