Фазы ActionListener в JSF

HI,

У меня есть сомнение в вызове метода ActionListener в JSF beans. Например, каждый запрос или представление формы JSF проходит через жизненный цикл шести фаз. Но когда мы запускаем конкретное событие, например, прослушиватель действий или прослушиватель изменений значений, существует ли какой-либо жизненный цикл, связанный с этим запросом?

Пожалуйста, уточните меня.

Ответ 1

Любой исполнитель действия вызывается во время действия фазы действия перед методом реального действия. Какие методы прослушивателя действия должны быть вызваны, определяются на основе атрибута actionListener компонента UICommand, связанного с отправкой.

Любой слушатель изменения значения вызывается во время фазы валидации (или применяет фазу запроса значения, когда immediate="true" для конкретного компонента UIInput) после успешного преобразования/проверки представленного значения и только тогда, когда представленное значение отличается от начального стоимость. Какие вызовы при вызове изменения значения определяются на основе атрибута valueChangeListener компонентов UIInput, которые связаны с отправкой.

И нет, у них нет собственного жизненного цикла. Когда они заканчивают выполнение и возвращение, он все еще находится в одной и той же фазе жизненного цикла. После вызова valueChangeListener JSF продолжит преобразование/проверку следующего компонента UIInput, или если его нет, перейдите к следующей фазе. После вызова actionListener JSF продолжит следующий actionListener или если их нет, вызовите метод реальных действий.


Обновить: после повторного чтения ваших комментариев, я думаю, что теперь я вижу ваши сомнения в особенности слушателя изменения стоимости. Кажется, вы думаете, что он по умолчанию немедленно вызывает новый запрос на стороне сервера во время события изменения клиентской стороны. Он делает это не по умолчанию. Вы можете достичь этого, добавив немного фрагмента кода JavaScript, который представляет всю HTML-форму во время события изменения поля ввода HTML.

onchange="this.form.submit()"

Эта часть не имеет ничего общего с JSF. Это простой атрибут HTML. Откройте страницу в webbrowser, щелкните правой кнопкой мыши и выберите "Просмотр источника". Вы увидите это там. Отключите JavaScript в своем браузере или удалите его в коде JSF, и вы увидите, что он больше не будет работать. Вам нужно будет нажать кнопку submit самостоятельно, чтобы запустить все.