我有一个 JSF 2.1 + Primefaces 5.1 Web 应用程序,我想处理ViewExpiredException
s。除了 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 类似的解决方案,但我还没有尝试过)。