Некоторые события actionListener
командных кнопок на странице xhtml моего приложения JSF не работали, пока я не добавил атрибут process="@this"
в тег <p:commandButton..
. Мне интересно, почему. Я не видел этого ни в одном примере. Я использую комбинацию JSF 2.2 и CDI вместе с Primefaces 5.0 в среде выполнения JBoss 7.1. Мои bean-компоненты - это CDI @javax.inject.Named
bean-компоненты, а область действия - @javax.enterprise.context.RequestScoped
..
Почему process=@this необходим для командной кнопки Primefaces
Ответы:
Вы просто не должны!
Поведение PrimeFaces commandButton по умолчанию равно process="@form"
, поэтому будет обработана вся форма. Если actionListener не вызывается, когда вы явно меняете поведение на process="form"
, но вызывается, когда вы меняете его на process="@this"
, то это обычно указывает на какую-то ошибку проверки или что-то подобное.
Чтобы проверить это, просто добавьте <p:messages autoUpdate="true">
на свою страницу, и вы увидите все сообщения об ошибках, которые могли возникнуть.
Исправьте эти ошибки подтверждения и/или проверки, и вы увидите, что ваше действие вызывается, даже если вы явно не добавляете атрибут процесса.
Вот объяснение того, почему вам нужно добавить атрибут process="@this"
к вашему <p:commandButton>
: get-action-invoked">Зачем явно добавлять process=@this в p:commandButton, чтобы вызвать действие?