<f:ajax onerror> 调用每个 ajax 请求,即使已完成

<f:ajax onerror> called on every ajax request even if completed

每当微调器中发生更改事件时,这段简单的代码都会发出警报。但是 ajax 状态表示请求已完成并且不会通知错误。

<p:ajaxStatus/>   
<p:spinner value="#{testBean.number}"
    id="testSpinner" min="1" max="20">
    <f:ajax event="change" onerror="alert('error')"/>
</p:spinner>

ajax状态的内容是这个:

<f:facet name="default">
    <h:outputText value="Status: StandBy" />
</f:facet>

<f:facet name="onerror">
    <h:outputText value="Status: onerror" />
</f:facet>

<f:facet name="complete">
    <h:outputText value="Status: Completed" />
</f:facet>

您必须为 onerror 属性编写 return 函数类型的内容。如果你写一个函数调用然后调用这个函数来获取一个值,如果这个值是一个函数类型就没有问题,但是 alert 函数没有 return 任何函数类型,此外,它会产生在屏幕上打印消息的副作用。所以你要做的是:

定义myfunction函数:

<script>
    var myfunction = function(){alert('error')};
</script>

然后做:

<f:ajax event="change" onerror="myfunction"/>

注意:

注意不要混淆 <f:ajax ... /><p:ajax ... />。这两个是等价的:

<f:ajax onerror="function(){alert('ERROR')}" />

<p:ajax onerror="alert('ERROR')" />