当Managed Bean创建并且bean的属性创建时?

时间:2010-11-30 07:48:35

标签: java jsf ajax4jsf

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

2 个答案:

答案 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,所以它将保持独立于会话。