0

在我们的应用程序中,我们使用 jsf,我们必须在会话过期后将用户重定向到主页。为此,我需要一个主页的路径,我将其保存在我的注销托管 bean 中作为托管 bean 属性。但是在会话之后如果我尝试访问过期,它将出现空指针异常(托管 bean 变为空)。然后我决定尝试替代(即)手动创建注销类并尝试访问该属性,当时我想要的属性访问权限变为空。我如何访问该属性?请帮我。提前致谢。

4

2 回答 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>

或上下文参数而不是会话属性。看:

或使用(在 faces-context.xml 中)

<managed-bean-scope>application</managed-bean-scope> 

对于您的 bean,因此它将保持独立于会话。

于 2010-11-30T11:43:47.447 回答