JSF - Вопрос о жизненном цикле - PullRequest
2 голосов
/ 27 ноября 2010

Сегодня я читал статью о жизненном цикле в JSF.

У меня есть некоторые проблемы с пониманием этих моментов:

1 - Этап 3: проверки процессов - Этофаза, в которой компонент может проверять свои новые значения. Если новое значение является действительным и отличается от предыдущего значения, событие изменения значения будет создано и помещено в очередь.Таким образом, в нашем примере, если пользователь изменяет имя перед отправкой формы, объект ValueChangeEvent будет создан компонентом Object UIInput, соответствующим текстовому полю Name, и поставит его в очередь для обработки в конце этого этапа . Вот какМетод valueChangeInput в компоненте поддержки вызывается.

Как JSF может узнать разницу между старым значением и новым?Экземплярами объекта просмотра являются 2?Предыдущий (тот, что перед запросом) и новый?(которые имеют значения в FacesContext, добавленные последним процессом, Применить значения запроса)

2 - Этап 5: Вызвать приложение - Как только все значения запроса были успешно установлены для бэк-компонента, события действиябудут поставлены в очередь на этапе применения значений запроса. В нашем случае метод действия кнопок отправки.

Таким образом, он отправляет непосредственно экземпляр FacesContext на последнюю фазу (ответ Render), который преобразует элементы пользовательского интерфейса (и их значения) в Html.Итак, когда же вызываются методы получения (бина)?

Cheers

1 Ответ

4 голосов
/ 27 ноября 2010

Как JSF может узнать разницу между старым значением и новым?Экземплярами объекта просмотра являются 2?Предыдущий (тот, что перед запросом) и новый?(значения которого в FacesContext добавлены последним процессом, Применить значения запроса)

Старое значение является текущим значением модели.Новое значение является отправленным значением.В следующем примере

<h:inputText value="#{bean.value}" />

JSF в основном сделает следующее (преобразование / проверка для краткости опущена):

Object oldValue = bean.getValue();
Object newValue = request.getParameter(clientId);
if (oldValue == null ? newValue != null : !oldValue.equals(newValue)) {
    // Create and queue ValueChangeEvent.
}

Таким образом, он напрямую отправляет экземпляр FacesContext на последнюю фазу (ответ Render), который преобразует элементы пользовательского интерфейса (и их значения) в Html.

Не совсем так, но да,ответ рендера сработает, когда действие invoke будет завершено.


Итак, когда вызывается метод получения (компонента)?

Да, это происходит во время ответа рендеринга, только когда они связаны в представлении.

Вы можете найти здесь другую статью, которая объясняет жизненный цикл JSF в более практической манере.

...