4

我有一个 JSF 2.1 + Primefaces 5.1 Web 应用程序,我想处理ViewExpiredExceptions。除了 web.xml 中的配置(通过 将异常映射到某个位置<error-page>),我读到我们需要在 ajax 请求期间抛出这些异常时对其进行处理。

Primefaces 为此提供了一个<p:ajaxExceptionHandler>。我尝试使用它,虽然我可以在服务器日志中看到异常被抛出,但我不能做任何其他事情。也许我以错误的方式使用它。例如,index.xhtml当发生此类异常时,我如何将用户发送到页面,刷新所有 ajax 组件?

我在 faces-config.xml 中定义了异常处理程序工厂:

<factory>
   <exception-handler-factory>
      org.primefaces.application.exceptionhandler.PrimeExceptionHandlerFactory
   </exception-handler-factory>
</factory>

并在我的模板页面中声明了 facelets 处理程序:

<p:ajaxExceptionHandler type="javax.faces.application.ViewExpiredException"/>

这是我针对这些异常的 web.xml 配置:

<error-page>
        <exception-type>javax.faces.application.ViewExpiredException</exception-type>
        <location>/index.xhtml</location>
    </error-page>

在使用这种方法不成功后,我尝试了异常处理程序的显式定义(检查会话是否存在 JSF),但也没有成功。

谁能告诉我如何解决这个问题?(我试图坚持使用普通的 JSF 和 Primefaces,虽然我知道 Omnifaces 提供了与 Primefaces 类似的解决方案,但我还没有尝试过)。

4

0 回答 0