【问题标题】:JSF redirect after EJBExceptionEJBException 后的 JSF 重定向
【发布时间】:2013-04-06 17:22:23
【问题描述】:

我将 JSF 与 JPA 一起使用。我的错误处理是由一个全局异常处理程序完成的,如果发生任何错误,它将被触发。在这个处理程序中,我只是重定向到我的 error.xhtml。

除了 JPA 处理程序之外,这工作正常。如果@EJB jpa 处理程序产生错误,在我的情况下,我将其视为 EJB 异常。在这种情况下,jsf 重定向不起作用。

FacesContext.getCurrentInstance().getExternalContext().redirect("/error/");

但我没有收到任何错误消息。我认为这与一些生命周期问题有关,但我不知道如何解决它。我只想用 jpa 和 jsf 实现全局错误处理,它总是在一个特定的错误页面结束:(

【问题讨论】:

    标签: jsf redirect jpa


    【解决方案1】:

    您是否使用一些 jsf 机制捕获异常?

    如果是,JSF 可能错过了那些 JPA 异常。你可以尝试通过 web.xml 来捕捉它们:

    <error-page>
           <exception-type>javax.faces.application.ViewExpiredException</exception-type>
           <location>/error_redirect.html</location>
    </error-page>
    
    <error-page>
        <error-code>404</error-code>
        <location>/error_redirect.html</location>
    </error-page>
    
    <error-page>
        <error-code>500</error-code>
        <location>/error_redirect.html</location>
    </error-page>
    
    <error-page>
           <exception-type>java.lang.Exception</exception-type>
           <location>/error_redirect.html</location>
    </error-page>
    
    <error-page>
           <exception-type>java.lang.Throwable</exception-type>
           <location>/error_redirect.html</location>
    </error-page>
    

    在“error_redirect.html”中,您可以重定向到“/faces/error.xhtml”或其他任何内容。

    也许您也可以直接将这些条目指向“/error/”,但由于某种原因(我不记得了)我使用了这个重定向 html :)

    【讨论】:

    • 感谢您的回答。我遵循了以下教程wmarkito.wordpress.com/2012/04/05/… .. 在这种情况下将调用异常处理程序,但只有重定向不起作用。我认为由于 EJB,facesContext 是错误的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2013-06-26
    • 2011-12-17
    • 2012-11-02
    • 2011-10-12
    • 1970-01-01
    相关资源
    最近更新 更多