在我们的应用程序中,我们使用 jsf,我们必须在会话过期后将用户重定向到主页。为此,我需要一个主页的路径,我将其保存在我的注销托管 bean 中作为托管 bean 属性。但是在会话之后如果我尝试访问过期,它将出现空指针异常(托管 bean 变为空)。然后我决定尝试替代(即)手动创建注销类并尝试访问该属性,当时我想要的属性访问权限变为空。我如何访问该属性?请帮我。提前致谢。
问问题
264 次
2 回答
1
这样做的正确方法是在 faces-config.xml 中声明异常处理程序工厂,然后通过子类化实现工厂 javax.faces.context.ExceptionHandlerFactory
,然后handle()
在您的实现中覆盖方法javax.faces.context.ExceptionHandlerWrapper
。在那里,您应该分析ViewExpiredException
该类的异常并在这种情况下重定向到您的视图过期页面。
于 2010-11-30T08:06:36.247 回答
1
除了上一个答案:
您可以使用(在 web.xml 中)
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>viewexpired.jsp</location>
</error-page>
或上下文参数而不是会话属性。看:
- http://tomcat.apache.org/tomcat-5.5-doc/config/context.html
- http://safebox.guisho.com/jsf-how-to-get-webxml-parameters
或使用(在 faces-context.xml 中)
<managed-bean-scope>application</managed-bean-scope>
对于您的 bean,因此它将保持独立于会话。
于 2010-11-30T11:43:47.447 回答