В чем различия между a h:commandButton и a4j:commandButton в JSF?
Можно ли ответить на этот вопрос здесь? Я знаю, что для a4j:commandButton существует отношение к ajax. Но когда я могу использовать h: commandButton и когда можно использовать a4j:commandButton.
Это ядро этого вопроса можно сослаться на h:commandLink и a4j:commandLink.
Большое спасибо! Maik
2 ответа
Основано на Richfaces 3.3.3 Live Demo
a4j:commandButton
похоже на стандартh:commandButton
, но выдает запрос Ajax с дальнейшим частичным обновлением страницы. Атрибут 'reRender' указывает на компонент (ы), которые должны быть повторно визуализированы в дереве компонентов и обновлены в DOM браузера после завершения Ajax Response.
В RichFaces 4
a4j:commandButton
сочетает в себе стандартh:commandButton
с a4j:ajax.
Когда вы сравниваете документацию VDL для a4j:commanButton и h:commandButton, вы можете увидеть некоторые связанные с ajax атрибуты в a4j:commandButton
: render
, limitRender
, onbeforedomupdate
, onbegin
, oncomplete
(эти атрибуты не являются частью h:commandButton
). Это означает, что оба могут быть использованы для действий и навигации по страницам, но a4j:commandButton
имеет дополнительные атрибуты для специальных параметров ajax (особенно в случае, когда требуется частичный повторный рендеринг).
Примечание, связанное с ответом Spindizzy:
Навигация по страницам работает нормально с a4j:commandButton
в RichFaces 3.3.x и RichFaces 4.x. Если у кого-то есть проблемы с навигацией по страницам, используя a4j:commandButton
(в JSF 1.2 и очень старых RichFaces) тогда это можно исправить, добавив <redirect />
в navigation-case
(face-config.xml)
A4j:commandButton существует начиная с версии 3.0.0 RichFaces, задолго до того, как стандартная реализация поддерживала Ajax.
Я всегда придерживался стандарта, поэтому используйте h:commandButton с поддержкой Ajax. Если вы не можете делать то, что хотите со стандартом, ищите альтернативы. Кнопка a4j имеет еще несколько функций.
Вариант использования для a4j:commandButton будет отображать панель, когда состояние бина изменилось без полной перезагрузки страницы.
Были некоторые проблемы, связанные с навигацией по страницам в старой версии RichFaces.