小编典典

JSF f:ajax侦听器vs commandButton动作

ajax

我很好奇这两种执行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>

看来人们使用第一种方法的频率更高,但是第二种方法似乎也能正常工作…


阅读 277

收藏
2020-07-26

共1个答案

小编典典

第一种方法允许通过返回String结果进行导航,而第二种则不能。如果客户端禁用了JS,第二种方法将不会调用任何内容,而第一种方法会正常降级。确实,第一种方法被更频繁地使用。

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

2020-07-26