7

我很好奇这两种执行ajax调用的方式有什么区别:

<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>

似乎人们更频繁地使用第一种方式,但第二种方式似乎也很好用......

4

1 回答 1

13

第一种方式允许通过返回String结果进行导航,而第二种方式则不允许。如果客户端禁用了 JS,第二种方式不会调用任何东西,而第一种方式会优雅地降级。事实上,第一种方式使用得更频繁。

第二种方式是组件中唯一没有action属性的方式,比如<h:selectOneMenu>等等。

于 2012-08-31T21:33:07.930 回答