f:ajax基于onevent返回值限制侦听器方法调用

时间:2013-02-26 14:41:32

标签: javascript ajax jsf-2 listener

如何检查Onevent javascript函数是返回true还是False?因为我试图做的基本上是根据Javascript返回值来限制监听器方法调用。

以下代码在Firebug中返回语法错误。

 <f:ajax event="keyup" render="@form" onevent="return validatePageNumber(event);" listener="#{bean.listenerMethod}"/>

那么我如何确定返回值并基于列表方法应该触发。谢谢提前:)

1 个答案:

答案 0 :(得分:5)

onevent属性必须指定JS函数引用名称,而不是整个JS脚本。 onevent属性的正确用法是

<f:ajax ... onevent="functionName" />

(是的,没有括号!)

function functionName(data) {
    alert(data.status); // Will show 3 times.
}

然而,对于您的想法,它显然是错误的工具。 onevent应仅引用一个监听器函数,该函数将被调用3次:一次发送ajax请求之前,一次是ajax响应之后,一次是基于HTML DOM更新后关于ajax的回应。有关正确的实际使用示例,请参阅Proccess onclick function after ajax call <f:ajax>Disable/enable commandbutton on ajax event

只需使用父组件的onXXX属性(其中XXX正是您想要挂钩的<f:ajax event>)。例如。 asusming它是<h:inputText>

<h:inputText ... onkeyup="return validatePageNumber(event)">
     <f:ajax event="keyup" render="@form" />
</h:inputText>