使用JSF的PrimeFaces - <p:commandButton>中的"onerror"不起作用

use*_*194 1 jsf dialog exception-handling onerror primefaces

我正在使用JSF,带@ManagedBean注释并使用Primefaces,我遇到了以下问题.

为什么onerror没有触发" "?该异常只出现在我的控制台中.

login.xhtml

<p:commandButton 
     value="teste" 
     action="#{loginBean.methodTest()}" 
     ajax="true" 
     immediate="false" 
     onerror="confirmation.show()" />

<p:dialog  
    appendToBody="true" 
    header="Atencao" 
    widgetVar="confirmation"  
    showEffect="bounce">  
     ...  
</p:dialog>  
Run Code Online (Sandbox Code Playgroud)

为myBean

@ManagedBean(name = "loginBean") 
@SessionScoped  
public class LoginBean {

    public void methodTest() throws Exception {
        System.out.println("hi");       
        throw new Exception("Exception Test");           
    }
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 6

这是预期的行为......

onerror:当ajax请求失败时执行的客户端回调.

在你的情况下,ajax请求根本没有失败,你抛出异常的事实与ajax失败无关

当jsf没有捕获你的异常,http错误左右时调用onerror.例外!=错误.

阅读此主题以获取更多详细信息Ajax Engine:onerror不起作用(可能会为您提供一些提示......)

请参阅以下有关f:ajax onerror的详细说明