org.omnifaces.EXCEPTION_TYPES_TO_UNWRAP donds';不适用于非ajax请求

org.omnifaces.EXCEPTION_TYPES_TO_UNWRAP donds';不适用于非ajax请求,ajax,jsf,omnifaces,Ajax,Jsf,Omnifaces,我使用FullAjaxExceptionHandlerFactory处理ajax和非ajax请求期间的异常 说 FullAjaxExceptionHandler将以与同步(非ajax)请求期间异常完全相同的方式透明地处理ajax请求期间的异常 我注意到,如果在同步请求期间发生异常,findExceptionRootCause(实际执行展开的方法)不会被调用。因此,web.xml中定义的规则不被应用,因为它们依赖于FullAjaxExceptionHandler展开 这是否意味着我需要扩展Full

我使用
FullAjaxExceptionHandlerFactory
处理ajax和非ajax请求期间的异常

FullAjaxExceptionHandler
将以与同步(非ajax)请求期间异常完全相同的方式透明地处理ajax请求期间的异常

我注意到,如果在同步请求期间发生异常,
findExceptionRootCause
(实际执行展开的方法)不会被调用。因此,
web.xml
中定义的规则不被应用,因为它们依赖于
FullAjaxExceptionHandler
展开

这是否意味着我需要扩展
FullAjaxExceptionHandler
,或者我缺少什么

堆栈跟踪: (非ajax请求)

web.xml: 或


javax.servlet.ServletException
/blueglue/templates/error/page-not-found.xhtml
我将得到预期的结果-404页

对于
javax.el.ELException
xxx.MyException
,异常结果是500页,这不是我所期望的

我使用
FullAjaxExceptionHandler
在ajax和非ajax请求期间处理异常

FullAjaxExceptionHandler
不处理非ajax请求期间的异常。它的唯一目的是以与非ajax请求相同的方式处理ajax请求期间的异常(即,显示在
web.xml
中定义的错误页面)

在链接的showcase页面中,您可以找到以下部分:

正常要求 请注意,
FullAjaxExceptionHandler
根本不处理正常(非ajax)请求。为了在正常请求上正确处理JSF和EL异常,您需要额外的
FacesceCeptionFilter
。这将从包装的
FacesException
eleException
中提取根本原因,然后将
ServletException
进一步委托给容器(即容器将使用
ServletException
的第一个根本原因在
web.xml
中异常匹配错误页面)

因此,您所需要做的就是安装,以便获得与
FullAjaxExceptionHandler

相同的解包行为。您是否检查了showcase页面的“正常请求”部分?@BalusC我刚才做了:)介绍误导了我,使我认为此处理程序对ajax和非ajax异常的处理方式相同。我当时的想法是像
FullExceptionHandler+Ajax=FullAjaxExceptionHandler
,但事实并非如此。。。
javax.servlet.ServletException:
     Caused by: javax.faces.view.facelets.TagAttributeException
          Caused by: javax.el.ELException
               Caused by: xxx.MyException
<context-param>
    <param-name>org.omnifaces.EXCEPTION_TYPES_TO_UNWRAP</param-name>
    <param-value>javax.servlet.ServletException,javax.faces.view.facelets.TagAttributeException,javax.el.ELException</param-value>
</context-param>
...
<error-page>
    <exception-type>xxx.MyException</exception-type>
    <location>/xxx/page-not-found.xhtml</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/xxx/internal-server-error.xhtml</location>
</error-page>
<error-page>
    <exception-type>javax.faces.view.facelets.TagAttributeException</exception-type>
    <location>/blueglue/templates/error/page-not-found.xhtml</location>
</error-page>
<error-page>
    <exception-type>javax.servlet.ServletException</exception-type>
    <location>/blueglue/templates/error/page-not-found.xhtml</location>
</error-page>