2012-08-31 66 views
7

我很好奇,是什麼執行Ajax調用的這兩種方式的區別:JSF F:阿賈克斯VS監聽行動的commandButton

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

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

看來,人們使用第一第二種方式似乎也可以正常工作......

回答

13

第一種方式允許通過返回String結果進行導航,第二種方式則不允許導航。第二種方式不會調用任何東西,如果客戶端有JS禁用,而第一種方式gracefully degrades。事實上,第一種方式更經常使用。

第二種方式是組件中不具有action屬性的唯一方法,如<h:selectOneMenu>等。