Есть ли разница между f: ajax и a4j: ajax? - PullRequest
10 голосов
/ 29 сентября 2011

Есть ли существенная разница между тегами f:ajax и a4j:ajax?

Я знаю об a4j: ajax из Richfaces 4 основан на собственном теге f: ajax JSF2, добавляющем некоторые атрибуты, не найденные в f: ajax, такие как onbegin, onbeforedoupdate, bypassUpdates, limitRender,status и focus но какой использовать, когда мне нужно только отправить простой ajax-запрос или частичный рендеринг?Есть ли проблемы с производительностью между f: ajax и a4j: ajax?

Ответы [ 2 ]

16 голосов
/ 29 сентября 2011

Тег <a4j:ajax> - это более удобная форма базового тега <f:ajax>. Вы можете найти хороший обзор всех отличий в этой странице .

Атрибут execute поддерживает дополнительное значение @region, указывающее на <a4j:region>. Любые EL в атрибутах execute и render разрешаются в текущем запросе, а не в начальном запросе.

Функция JS атрибута onevent обоих тегов будет вызываться 3 раза (переданное значение data.status будет иметь значения begin, complete, success). Это заставляет вас использовать switch или if, когда вы заинтересованы только в одном из них или хотите относиться к ним по-другому. <a4j:ajax> делает это более удобным с атрибутами onbegin, onbeforedomupdate и oncomplete соответственно. См. Также этот связанный вопрос: JSF 2: Как показать разные состояния AJAX на одном входе?

Если вас не интересуют какие-либо из этих улучшений, то использование <f:ajax> также должно быть вполне приемлемым. Разница в производительности (и должна быть) совершенно незначительна и не является причиной выбора одного над другим.

2 голосов
/ 29 сентября 2011

Вот дополнительная информация о различиях между f: ajax и a4j: ajax: http://mkblog.exadel.com/2010/08/what-richfaces-a4jajax-adds-on-top-jsf-2-fajax-tag/

...