Руководство по JSF. Жизенный цикл приложения.

Жизненный цикл JSF приложения состоит из следующих шести фаз:

  • Фаза восстановления внешнего вида
  • Фаза принятия данных запроса
  • Фаза валидации
  • Фаза обновления данных модели
  • Фаза запуска приложения
  • Фаза рендеринга ответа

jsf_life_cycle


Обновление внешнего вида

После того, как происходит переход по ссылке или нажатие кнопки и JSF получает запрос – начинается восстановление внешнего вида по текущим данным, которые хранятся на сервере.

Во время этой фазы JSF выполняет сборку внешнего вида, связывает обработчики событий и валидаторов с компонентами пользовательского интерфейса (далее – компоненты UI) и сохраняет отображение в экземпляре FacesContext. После этого, данный экземпляр FacesContext содержит всю информацию, необходимую для обработчик запроса.


Принятие данных запроса

После создания или обновления дерева компонентов, каждый компонент использует метод декодирования для извлечения нового значения из параметров запроса. Компонент хранит данное значение. Если обмен данными не успешен, сообщение об ошибке генерируется и помещается в очередь FacexContext. Данное сообщение будет отображено во время фазы рендеринга ответа вместе с любыми сообщениями об ошибках валидации.

Если любой из методов декодирования или обработчиков событий вызывает renderResponse текущего экземпляра FacesContext, JSF переходит в фазу рендеринга ответа.


Валидация

Во время фазы валидации JSF обрабатывает все зарегистрированные компоненты дерева. Он проверяет правила для аттрибутов компонента для валидации и сравнивает текущие данные, которые хранятся компонентом с этими правилами.

Если текущее значение не валидно (не соответствует установленным правилам), JSF генерирует сообщение об ошибке и добавляет его в очередь экземпляра FacesContext. После этого происходит переход в фазу рендеринга ответа и отображение той же самой страницы с сообщением об ошибке.


Обновление занчений модели

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

Если любой из методов обновления модели вызывает методы рендеринга ответа текущего экземпляра FacesContext, то JSF переходит в фазу рендеринга ответа.


Запуск приложения

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


Рендеринг ответа

В этой фазе JSF выполняет запрос в адресс сервера на рендеринг страницы, если приложение использует JSP-страницы. Для начального запроса, компоненты (которые представлены на странице) добавляются в дерево компонентов в момент выполнения страницы контейнером JSP. Если это не начальный запрос, то дерево компонентов уже построено и нет необходимости добавлять их снова. В противном случае, компоненты будут рендерить сами себя в момент, когда сервер приложения буедт “проходить” по тегам на странице.

После того, как происходит рендеринг контента страницы состояние ответа сохраняется и последующие запросы могут получить к данному состоянию доступ. Данное состояние переходит в фазу восстановления внешнего вида

На этом мы заканчиваем изучение жизненного цикла JSF приложения.

В следующей статье мы рассмотрим пример создания простого приложения с использованием JSF.