在调用f:ajax侦听器之前和之后执行JavaScript

在调用f:ajax侦听器之前和之后执行JavaScript,javascript,ajax,jsf-2.2,Javascript,Ajax,Jsf 2.2,在调用之前和之后调用JavaScript操作有一种简单的方法,例如,我想调用窗口。在和窗口之前调用alert(“pre”)。在支持beanACtrl中调用onChange之后调用alert(“post”): <h:form> <h:inputText id="anId" value="#{cityCtrl.dbHost}"> <f:ajax event="change" listener="#{aCtrl.onChange}" execute

在调用
之前和之后调用JavaScript操作有一种简单的方法,例如,我想调用
窗口。在
窗口之前调用alert(“pre”)
。在支持bean
ACtrl中调用
onChange
之后调用alert(“post”)

<h:form>
    <h:inputText id="anId" value="#{cityCtrl.dbHost}">
        <f:ajax event="change" listener="#{aCtrl.onChange}" execute="@all"/>
    </h:inputText>
</h:form>
添加多个
f:ajax
元素似乎不起作用(也许应该?!),例如

仅调用
ACtrl.onChange

使用属性。它必须指向回调函数引用(因此不要包含括号!):


实际回调函数如下所示(JSF将自己提供参数):

另见:
  • -表14.3和14.4

我怎么可能没有用OneEvent的javadoc(“处理UI事件的JavaScript函数的名称”)解决这个问题呢谢谢
<h:form>
    <h:inputText id="anId" value="#{cityCtrl.dbHost}">
        <f:ajax event="change" listener="#{aCtrl.toggle}" execute="@all"/>
        <f:ajax event="change" listener="#{aCtrl.onChange}" execute="@all"/>
        <f:ajax event="change" listener="#{aCtrl.toggle}" execute="@all"/>
    </h:inputText>
</h:form>
function functionName(data) {
    var status = data.status; // Can be "begin", "complete" or "success".
    var source = data.source; // The parent HTML DOM element.

    switch (status) {
        case "begin": // Before the ajax request is sent.
            // ...
            break;

        case "complete": // After the ajax response is arrived.
            // ...
            break;

        case "success": // After update of HTML DOM based on ajax response.
            // ...
            break;
    }
}