f:ajax
标签和a4j:ajax
标签之间有何显著区别?
我知道来自Richfaces 4的a4j:ajax
是基于本地的f:ajax
JSF2标签添加了一些在f:ajax
中找不到的属性,例如onbegin
、onbeforedoupdate
、bypassUpdates
、limitRender
、status
和focus
。但是在只需要发送简单的ajax请求或部分渲染时应该使用哪一个? 在f:ajax
和a4j:ajax
之间是否存在性能问题?
<a4j:ajax>
标签是基本的 <f:ajax>
标签的更方便的形式。您可以在此页面找到所有差异的漂亮概述。
execute
属性支持额外的 @region
值,指向 <a4j:region>
。任何 EL 在 execute
和 render
属性中都会在当前请求中解析,而不是在初始请求中解析。onevent
属性的 JS 函数将被调用 3 次(传入的 data.status
然后具有值 begin
、complete
、success
)。这迫使你在你只对其中一个感兴趣或想要以不同的方式处理它们时使用 switch
或 if
。使用 <a4j:ajax>
可以通过分别使用 onbegin
、onbeforedomupdate
和 oncomplete
属性来更方便地实现。另请参见这个相关问题:JSF 2: How show different ajax status in same input?
如果您不对这些增强功能感兴趣,那么使用 <f:ajax>
也应该完全没有问题。性能差异(必须)完全可以忽略,不应成为选择其中之一的原因。以下是关于f:ajax和a4j:ajax之间的区别的更多信息:http://mkblog.exadel.com/2010/08/what-richfaces-a4jajax-adds-on-top-jsf-2-fajax-tag/