Is there any difference between f:ajax and a4j:ajax?
Is there any significant difference between f:ajax
and a4j:ajax
tags?
I know about a4j:ajax from Richfaces 4 is based on native f:ajax J开发者_如何学PythonSF2 tag adding some attributes not found in f:ajax like onbegin
, onbeforedoupdate
, bypassUpdates
, limitRender
, status
and focus
but which one to use when I only need to send a simple ajax request or partial rendering ? Is there performance issues between f:ajax and a4j:ajax?
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.
Here is more information on the differences between f:ajax and a4j:ajax: http://mkblog.exadel.com/2010/08/what-richfaces-a4jajax-adds-on-top-jsf-2-fajax-tag/
精彩评论