JSF f:ajax 监听器 vs commandButton 动作
Posted
技术标签:
【中文标题】JSF f:ajax 监听器 vs commandButton 动作【英文标题】:JSF f:ajax listener vs commandButton action 【发布时间】:2012-08-26 16:55:12 【问题描述】:我很好奇这两种执行 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>
似乎人们更经常使用第一种方式,但第二种方式似乎也可以正常工作......
【问题讨论】:
【参考方案1】:第一种方式允许通过返回String
结果进行导航,而第二种方式则不允许。如果客户端禁用了 JS,第二种方式不会调用任何东西,而第一种方式 gracefully degrades。确实,第一种方式用得比较多。
第二种方式是组件中唯一没有action
属性的方式,如<h:selectOneMenu>
等。
【讨论】:
以上是关于JSF f:ajax 监听器 vs commandButton 动作的主要内容,如果未能解决你的问题,请参考以下文章
JSF2 <h:selectOneMenu 和 <f:ajax 侦听器在 PrettyFaces 过滤器导航之后未调用
JSF 2 - 如何将 Ajax 侦听器方法添加到复合组件接口?