JSF - Жизненный цикл
Жизненный цикл приложения JSF состоит из шести этапов, а именно:
- Восстановить фазу просмотра
- Фаза применения значений запроса; события процесса
- Фаза валидации процесса; события процесса
- Этап обновления значений модели; события процесса
- Фаза вызова приложения; события процесса
- Фаза отклика рендера
Шесть этапов показывают порядок, в котором JSF обрабатывает форму. В списке показаны фазы в вероятном порядке их выполнения с обработкой событий на каждой фазе.
Этап 1. Восстановление вида
JSF начинает фазу просмотра восстановления, как только щелкают ссылку или кнопку и JSF получает запрос.
На этом этапе JSF создает представление, связывает обработчики событий и валидаторы с компонентами пользовательского интерфейса и сохраняет представление в экземпляре FacesContext. Экземпляр FacesContext теперь будет содержать всю информацию, необходимую для обработки запроса.
Этап 2. Применение значений запроса
После создания / восстановления дерева компонентов каждый компонент в дереве компонентов использует метод декодирования для извлечения своего нового значения из параметров запроса. Компонент хранит это значение. Если преобразование не удается, создается сообщение об ошибке, которое помещается в очередь FacesContext. Это сообщение будет отображаться на этапе ответа на рендеринг вместе с любыми ошибками проверки.
Если какие-либо прослушиватели событий методов декодирования вызывают renderResponse в текущем экземпляре FacesContext, JSF переходит в фазу ответа отрисовки.
Этап 3: проверка процесса
На этом этапе JSF обрабатывает всех валидаторов, зарегистрированных в дереве компонентов. Он проверяет правила атрибутов компонента для проверки и сравнивает эти правила с локальным значением, сохраненным для компонента.
Если локальное значение недопустимо, JSF добавляет сообщение об ошибке в экземпляр FacesContext, и жизненный цикл переходит к фазе ответа отрисовки и снова отображает ту же страницу с сообщением об ошибке.
Этап 4. Обновление значений модели
После того, как JSF проверит правильность данных, он проходит по дереву компонентов и устанавливает соответствующие свойства объекта на стороне сервера на локальные значения компонентов. JSF обновит свойства bean-компонента, соответствующие атрибуту значения входного компонента.
Если какие-либо методы updateModels вызывают renderResponse в текущем экземпляре FacesContext, JSF переходит к фазе ответа отрисовки.
Этап 5: вызов приложения
На этом этапе JSF обрабатывает любые события уровня приложения, такие как отправка формы / ссылка на другую страницу.
Этап 6: отрисовка ответа
На этом этапе JSF запрашивает сервер контейнера / приложения для визуализации страницы, если приложение использует страницы JSP. Для первоначального запроса компоненты, представленные на странице, будут добавлены в дерево компонентов по мере того, как контейнер JSP выполняет страницу. Если это не первоначальный запрос, дерево компонентов уже построено, поэтому компоненты не нужно добавлять снова. В любом случае компоненты будут отображаться, когда контейнер JSP / сервер приложений просматривает теги на странице.
После визуализации содержимого представления состояние ответа сохраняется, чтобы последующие запросы могли получить к нему доступ, и оно доступно на этапе восстановления представления.