Изучаем Java EE 7 - [156]

Шрифт
Интервал


Для того чтобы иметь HTML-представление страницы, описанной в листинге 10.7, среда выполнения JSF фактически использует HTML-представление каждого компонента, определенного на странице. Эти компоненты HTML наследуют от одного из компонентов, перечисленных в табл. 10.3. Например, определяется классом javax.faces.component.html.HtmlOutputLabel, который наследует от UIOutput. Компонент определяется в классе javax.faces.component.html.HtmlPanelGrid, который наследует от UIPanel, и т. д. XML в листинге 10.8 является представлением в виде дерева страницы, описанной в листинге 10.7.


Листинг 10.8. Упрощенный вид дерева компонентов XML newBook

>

>··

>····Создать новую книгу

>····

>······

Создать новую книгу

>······



>······

>········


>··········

>··········


>··········

>··········


>··········

>··········


>··········

>··········


>··········

>··········


>··········

>··········

>········


>········

>······


>······


>······

>style="font-style: italic"/>


>····

>··

>


Совет

Вы легко можете получить представление дерева компонентов страницы JSF, просто добавив везде тег и нажав сочетание клавиш Ctrl+Shift+D.

Жизненный цикл

Страница JSF — это дерево компонентов со специфичным жизненным циклом. Вы должны понимать этот цикл, чтобы знать, когда проверяются компоненты или обновляется модель. Нажатие кнопки вызывает отправку запроса от вашего браузера на сервер. Этот запрос переводится в событие, которое может быть обработано логикой вашего приложения на сервере. Все входные данные пользователя проходят фазу проверки перед обновлением модели и вызовом бизнес-логики. JSF ответственен за то, чтобы каждый графический компонент (как предки, так и потомки) был правильно отображен в браузере. На рис. 10.6 показаны различные этапы жизненного цикла страницы JSF.

Жизненный цикл JSF делится на шесть отдельных этапов.

1. Восстановление вида. JSF находит целевое представление и применяет к нему пользовательский ввод. Если это первое посещение страницы клиентом, JSF создает представление как компонент UIViewRoot (корень дерева компонентов, которые составляют определенную страницу, что показано в листинге 10.8). Если это не первый запрос, то ранее сохраненный компонент UIViewRoot извлекается для обработки текущего запроса HTTP.

2. Применение параметров запроса. Параметры, которые появились из запроса (из полей ввода в веб-форме, из cookies или из заголовков запроса), применяются к различным компонентам страницы. Обратите внимание, что обновляют свое состояние только компоненты пользовательского интерфейса, но не компоненты-подложки, составляющие модель.

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


Рис. 10.6. Жизненный цикл JSF


4. Обновление значений модели. Все проверенные значения компонентов связываются с соответствующими компонентами-подложками.

5. Вызов приложения. Теперь вы можете выполнить бизнес-логику. Любое выбранное действие будет выполнено компонентом-подложкой, здесь вступает в действие навигация, поскольку она возвращает ответ отрисовщика.

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

Поток исполнения цикла «запрос/ответ» может как протекать через каждую фазу, так и опускать некоторые из них, в зависимости от запроса и того, что происходит во время обработки. Если случается ошибка, поток выполнения моментально переходит к фазе отрисовки ответа. Обратите внимание, что четыре фазы могут генерировать сообщения: применение параметров запроса, проверка процесса, обновление значений модели и вызов приложения. Независимо от того, есть сообщения или нет, выходные данные отправляются пользователю в фазе отрисовки ответа.

Анатомия компонентов JSF

Страница JSF представляет собой дерево компонентов. Некоторые из этих компонентов имеют HTML-представления, другие — нет, они позволяют вам проверять данные, преобразовывать их или разрешить вызов AJAX. Вы можете использовать несколько компонентов для разработки веб-страниц:


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

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


Симуляция частичной специализации

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


Обработка событий в С++

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


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.