The <a4j:ajax>
tag is just the more convenient form of the basic <f:ajax>
tag. You can find a nice overview of all differences in this page.
The execute
attribute supports an extra @region
value pointing to the <a4j:region>
. Any EL in execute
and render
attributes is resolved in current request instead of in initial request.
The JS function of the onevent
attribute of both tags will be invoked 3 times (the passed-in data.status
has then the values begin
, complete
, success
). This forces you to use a switch
or if
when you're only interested in one of them or want to treat them differently. The <a4j:ajax>
makes this more convenient with onbegin
, onbeforedomupdate
and oncomplete
attributes respectively. See also this related question: JSF 2: How show different ajax status in same input?
If you're not interested in any of those enhancements, then using <f:ajax>
should be perfectly fine as well. The performance difference is (and must be) totally negligible and not be the reason to choose one over the other.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…