【问题标题】:f:ajax restricting the listener method call based on onevent return valuef:ajax 根据 onevent 返回值限制监听方法调用
【发布时间】:2013-02-26 14:41:32
【问题描述】:

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

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

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

那么我如何确定返回值并基于该 lister 方法应该触发。在此先感谢 :)

【问题讨论】:

  • 用“if (!validatePageNumber()) return false;”绑定你组件的期望行为并在您的组件标签中附上 f:ajax 标签。这样你就可以根据你的 JavaScript 代码拦截执行。

标签: javascript ajax jsf-2 listener


【解决方案1】:

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

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

(是的,没有括号!)

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

但是,对于您的预期目的,这显然是错误的工具。 onevent 应该只引用一个 listener 函数,该函数将被调用 3 次:一次在发送 ajax 请求之前,一次在 ajax 响应到达之后,一次在基于 ajax 更新 HTML DOM 之后回复。有关正确的实际使用示例,请参阅 Proccess onclick function after ajax call <f:ajax>Disable/enable commandbutton on ajax event 等。

只需使用父组件的onXXX 属性代替(其中XXX 正是您想要连接的&lt;f:ajax event&gt;)。例如。假设它是&lt;h:inputText&gt;:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 2013-01-20
    • 2013-07-27
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    相关资源
    最近更新 更多