Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FullAjaxExceptionhandler仅捕获javax.el.ELException或java.lang.Throwable_Java_Jsf_Jsf 2_Spring El_Omnifaces - Fatal编程技术网

FullAjaxExceptionhandler仅捕获javax.el.ELException或java.lang.Throwable

FullAjaxExceptionhandler仅捕获javax.el.ELException或java.lang.Throwable,java,jsf,jsf-2,spring-el,omnifaces,Java,Jsf,Jsf 2,Spring El,Omnifaces,FullAjaceExceptionHandler只能捕获javax.el.ELException或java.lang.Throwable。Throwable也优先于javax.el.ELException。我需要显式捕获托管bean抛出的特定异常。但是,ELException显然包装了根本原因异常(即LoginFailedException) 我正在使用JSF2(MyFaces2.1.10)、SpringEL解析器(SpringManagedBeans)、EL-api-2.2和glassfis

FullAjaceExceptionHandler只能捕获javax.el.ELException或java.lang.Throwable。Throwable也优先于javax.el.ELException。我需要显式捕获托管bean抛出的特定异常。但是,ELException显然包装了根本原因异常(即LoginFailedException)

我正在使用JSF2(MyFaces2.1.10)、SpringEL解析器(SpringManagedBeans)、EL-api-2.2和glassfish EL-impl-2.2

以下是错误:

Ajax request: No
Status code: 500
Exception type: class org.apache.myfaces.view.facelets.el.ContextAwareELException
Exception message: javax.el.ELException: org.tests.omnifaces.exception.LoginFailedException: Login failed.
Stack trace: org.apache.myfaces.view.facelets.el.ContextAwareELException: javax.el.ELException: org.tests.omnifaces.exception.LoginFailedException: Login failed.
...
LoginFailedException是一个简单的自定义异常。 我将感谢任何帮助。提前谢谢

编辑: 完成的实验:

我创建了3个错误页面,以查看在引发LoginFailedException时调用/使用哪个页面。XHTML错误页面包含完全相同的代码,除了标识哪个是哪个的头字符串。以下是web.xml错误条目:

<error-page>
    <exception-type>org.tests.omnifaces.exception.LoginFailedException</exception-type>
    <location>/pages/errors/loginError.xhtml</location>
</error-page>

<error-page>
    <exception-type>javax.el.ELException</exception-type>
    <location>/pages/errors/elException.xhtml</location>
</error-page>

<error-page>
   <exception-type>java.lang.Throwable</exception-type>
   <location>/pages/errors/catchAllThrowable.xhtml</location>
</error-page>

org.tests.omnifaces.exception.LoginFailedException
/页面/错误/登录错误.xhtml
javax.el.ELException
/页面/错误/elException.xhtml
java.lang.Throwable
/页面/错误/catchAllThrowable.xhtml
将使用catchAllThrowable.xhtml。如果我删除(在web.xml上注释掉)Throwable,将使用ELException.xhtml。如果删除ELException,异常将由容器(tomcat)处理,而不是由loginError.xhtml处理

希望这能澄清我的情况

更新:

我现在使用AJAX调用提交表单(我想这就是处理程序的用途),web.xml上所有3个错误处理程序页面都处于活动状态(Throwable、ELException、LoginFailedException):



已跳过可丢弃项,并且已匹配ELException(ELException.xhtml呈现)。仍然无法锁定LoginFailedException。

FullAjaxExceptionHandler仅揭示
面部异常的根本原因。但是,MyFaces
ContextAwareELException
不是
FacesException
的子类,而是
EleException
的子类,因此保持未包装状态


根据OmniFaces,将
FullAjaxExceptionHandler
改进为unwrap
eleException
。这是从OmniFaces 1.4开始提供的。

请发布您的功能需求以及您试图解决的问题,否则没有人可以帮助您。谢谢@Luiggi。我编辑了我的帖子以获得澄清。希望能有帮助。目前,这只是一个实验/演示。我唯一的要求是使用FullAjaxExceptionHandler和相应的错误页面显示托管bean引发的自定义异常。OmniFaces的代码片段建议它打开异常以找到根本原因并识别错误页面。我想BalusC可以最好地回答这个问题:-)请尝试这里提供的快照:快照解决了它。现在效果很好。非常感谢,@BalusC
<h:commandButton id="loginButton" value="Login" action="#{login.loginUser}">
    <f:ajax execute="@form" render="@form messages" />
</h:commandButton>