Exécuter le code JavaScript avant et après le f:ajax auditeur est appelé

Il il un moyen facile d'invoquer une action JavaScript avant et après l'invocation d'un <f:ajax listener>, par exemple, je voudrais invoquer window.alert("pre") avant et window.alert("post") après onChange est invoquée dans le backing bean ACtrl:

<h:form>
    <h:inputText id="anId" value="#{cityCtrl.dbHost}">
        <f:ajax event="change" listener="#{aCtrl.onChange}" execute="@all"/>
    </h:inputText>
</h:form>
@ManagedBean
public class ACtrlimplements Serializable {
    public void onChange(AjaxBehaviorEvent event) {
        System.out.println("something changed");
    }
}

Ajout de plusieurs f:ajax éléments ne semble pas fonctionner (peut-être qu'il devrait?!), par exemple, dans

<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>
@ManagedBean
public class ACtrlimplements Serializable {
    public void onChange(AjaxBehaviorEvent event) {
        System.out.println("something changed");
    }

    public void toggle(AjaxBehaviorEvent event) {
        System.out.println("blah");
    }
}

seulement ACtrl.onChange est invoquée.

OriginalL'auteur Karl Richter | 2014-07-23