【问题标题】:When Managed Bean creates and property of the beans creates?托管 Bean 何时创建并创建 bean 的属性?
【发布时间】:2010-11-30 07:48:34
【问题描述】:

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

【问题讨论】:

  • 因为我需要将主页路径作为动态路径。它不是热编码的。所以只有我想保留作为托管属性。

标签: java jsf ajax4jsf


【解决方案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,因此它将保持独立于会话。

【讨论】:

    【解决方案2】:

    这样做的正确方法是在 faces-config.xml 中声明异常处理程序工厂,然后通过子类化 javax.faces.context.ExceptionHandlerFactory 来实现工厂,然后在 javax.faces.context.ExceptionHandlerWrapper 的实现中覆盖 handle() 方法。 在这种情况下,您应该分析 ViewExpiredException 类的异常并重定向到您的视图过期页面。

    【讨论】:

    • 嗨 Ivanov,我们在我们的应用程序中使用了相同的方法。但问题仅在于重定向到错误页面。我的应用程序重定向到错误页面。但是页面没有加载。
    • 通过在 server.xml 中添加 emptysessionPath=true 我可以得到它的作品。
    猜你喜欢
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 2016-09-01
    • 2013-02-10
    相关资源
    最近更新 更多