<f:ajax onerror =“”>即使已完成,也会调用每个ajax请求

时间:2015-09-13 22:23:58

标签: ajax jsf onerror

每次在微调器中发生更改事件时,这段简单的代码都会发出警报。但是,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>

1 个答案:

答案 0 :(得分:3)

您必须编写一些返回onerror属性的函数类型的东西。如果编写函数调用,则调用此函数以获取值,如果此值是函数类型则没有问题,但alert函数不返回任何函数类型,而且它生成在屏幕上打印消息的副作用。所以你要做的是:

定义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')" />