Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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 JSF2 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?

like image 845
Victor Martinez Avatar asked Sep 28 '11 22:09

Victor Martinez


2 Answers

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.

like image 111
BalusC Avatar answered Oct 22 '22 10:10

BalusC


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/

like image 26
Max Katz Avatar answered Oct 22 '22 09:10

Max Katz