如何将FullAjaxExceptionHandler与PrimeFaces actionListener一起使用

时间:2013-11-15 11:31:21

标签: jsf-2 primefaces exception-handling omnifaces

我对OmniFaces的FullAjaxExceptionHandler如何与<p:commandButton>提供的PrimeFaces actionListener合作感到困惑。使用常规<h:commandButton>,错误页面会正确显示,但是如果使用<p:commandButton>,则不会发生任何事情,并且只会将异常记录到控制台。

我的环境:PrimeFaces 4.0,GlassFish 3.1.2.2,OmniFaces 1.6.3。

查看:

<h:form>
    <p:commandButton actionListener="#{errorTester.throwRuntimeException}"
                     value="PrimeFaces" />
    <h:commandButton value="JSF"
        action="#{errorTester.throwRuntimeException}">
        <f:ajax execute="@form" render="@form" />
    </h:commandButton>
</h:form>

bean方法:

public void throwRuntimeException() {
    throw new RuntimeException("peek-a-boo");
}

如何配置<p:commandButton>以获取FullAjaxExceptionHandler处理的异常?

1 个答案:

答案 0 :(得分:1)

主要的错误是你(ab)使用actionListener进行商业活动,而不是那样做。您应该使用action

<p:commandButton action="#{errorTester.throwRuntimeException}" 
                 value="PrimeFaces" />

如果从actionListener抛出异常,则将跳过所有剩余的actionListeneraction,并且JSF将继续呈现响应。 据我所知,PrimeFaces展示的所有地方的商业行为被滥用actionListener混乱,但你不应该以此为借口自己也这样做。

另见: