2012-08-31 10 views
7

Ich bin gespannt, was der Unterschied zwischen diesen beiden Arten der Ausführung Ajax-Aufrufe ist:JSF f: ajax Zuhörer vs command Aktion

<h:commandButton value="Submit" action="#{bean.action}"> 
    <f:ajax execute="@form" render="component"/> 
</h:commandButton> 

und

<h:commandButton value="Submit"> 
    <f:ajax listener="#{bean.action}" execute="@form" render="component"/> 
</h:commandButton> 

Es scheint, dass die Menschen die ersten verwenden viel häufiger, aber die zweite scheint auch gut zu funktionieren ...

Antwort

13

Die erste Möglichkeit ermöglicht die Navigation durch die Rückkehr eines String Ergebnis und die zweite nicht. Der zweite Weg ruft nichts auf, wenn der Client JS deaktiviert hat, während der erste Weg gracefully degrades ist. In der Tat wird der erste Weg häufiger verwendet.

Der zweite Weg ist der einzige Weg in Komponenten, die kein action Attribut wie <h:selectOneMenu> und so weiter haben.