我有一个JSF 2.1 + Primefaces 5.1 Web应用程序,我想处理ViewExpiredException
。除了web.xml中的配置(通过<error-page>
将异常映射到某个位置),我{I}需要在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>
在使用此方法失败后,我尝试了异常处理程序(read)的显式定义,但也没有成功。
谁能告诉我如何解决这个问题? (我试图坚持使用简单的JSF和Primefaces,虽然我知道Omnifaces为Primefaces提供了类似的解决方案,但我还没有尝试过。)