2012-08-31 12 views
7

jestem ciekaw jaka jest różnica między tymi dwoma sposobami wykonywania połączeń ajax:JSF f: ajax słuchacz vs działania CommandButton

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

i

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

Wydaje się, że ludzie wykorzystują pierwszy dużo częściej, ale druga wydaje się działać równie dobrze ...

Odpowiedz

13

Pierwszy sposób pozwala na nawigację, zwracając wynik String, a drugi nie. Drugi sposób nie wywoła niczego, jeśli klient ma wyłączony JS, podczas gdy pierwsza droga to gracefully degrades. Rzeczywiście, pierwszy sposób jest używany częściej.

Drugi sposób to jedyny sposób w komponentach, które nie mają atrybutu action, na przykład <h:selectOneMenu> i tak dalej.

Powiązane problemy