我很好奇这两种执行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>
似乎人们更频繁地使用第一种方式,但第二种似乎也很好用......
答案 0 :(得分:13)
第一种方式允许通过返回String
结果而不是第二种方式进行导航。如果客户端已禁用JS,第二种方式将不会调用任何内容,而第一种方式gracefully degrades。实际上,第一种方式更经常使用。
第二种方式是没有action
属性的组件的唯一方法,例如<h:selectOneMenu>
等。