在JSF中h:commandButton和a4j:commandButton之间有什么区别?

时间:2014-02-25 20:42:33

标签: jsf ajax4jsf

这个问题可以在这里得到解答吗?我知道对于a4j:commandButton存在与ajax的关系。但是什么时候可以使用h:commandButton并且可以使用a4j:commandButton。

这个问题的核心可以参考h:commandLink和a4j:commandLink。

非常感谢! MAIK

2 个答案:

答案 0 :(得分:1)

基于Richfaces 3.3.3 Live Demo

  

a4j:commandButton与标准h:commandButton类似,但会生成带有进一步部分页面更新的Ajax请求。 'reRender'属性指向应在组件树中重新呈现并在Ajax响应完成后在浏览器DOM中更新的组件

在RichFaces 4中

  

a4j:commandButton将标准h:commandButton与a4j:ajax结合起来。

比较a4j:commanButtonh:commandButton的VDL文档时,您可以在a4j:commandButton中看到一些与ajax相关的属性:renderlimitRender,{{1 },onbeforedomupdateonbegin(这些属性不属于oncomplete)。这意味着两者都可用于操作和页面导航,但h:commandButton具有ajax特殊选项的附加属性(特别是在需要部分页面重新渲染的情况下)。


注意与Spindizzy的答案有关:
页面导航在RichFaces 3.3.x和RichFaces 4.x中与a4j:commandButton一起正常工作。如果有人使用a4j:commandButton(在JSF 1.2和非常旧的RichFaces中)导航页面导航时出现问题,则可以通过在a4j:commandButton中添加<redirect />来解决此问题( faces-config.xml < /强>)

答案 1 :(得分:0)

a4j:commandButton自RichFaces 3.0.0版本开始存在,很久以前标准实现支持Ajax。

我总是坚持标准,所以使用带有Ajax支持的h:commandButton。如果你不能做你想做的标准,寻找替代品。 a4j按钮还有一些功能。

a4j的一个用例:commandButton会在bean的状态发生变化而没有完全重新加载页面时呈现一个面板。

在较旧版本的RichFaces中,有一些issues与页面导航相关。