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