在我们的应用程序中,我们使用jsf 将用户重定向到主页 在他们的会话将过期之后。为此我需要一个主页的路径,我将其作为托管bean属性保存在我的注销托管bean中。但是在会话过期后如果我尝试访问它将出现空指针异常(托管bean)变为空)。然后 我决定尝试替代(即)手动创建注销类并尝试访问该属性,那时我想访问的属性变为null。如何访问 那个属性? 请帮我。 提前谢谢。
答案 0 :(得分:1)
正确的方法是在faces-config.xml中声明异常处理程序工厂,然后通过继承javax.faces.context.ExceptionHandlerFactory
来实现工厂,然后在handle()
的实现中覆盖javax.faces.context.ExceptionHandlerWrapper
方法。
在那里,您应该分析ViewExpiredException
类的异常,并在这种情况下重定向到您的视图过期页面。
答案 1 :(得分:1)
除了上一个答案:
您可以使用(在web.xml中)
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>viewexpired.jsp</location>
</error-page>
或上下文参数而不是会话属性。见:
或使用(在faces-context.xml中)
<managed-bean-scope>application</managed-bean-scope>
为你的bean,所以它将保持独立于会话。