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

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

• встроенные компоненты JSF: HTML, Core и Templating;

• теги JSTL;

• ваши собственные компоненты;

• компоненты сторонних производителей (с открытым исходным кодом или коммерческие).

Иногда этим компонентам нужны внешние ресурсы, такие как изображения, CSS или JavaScript. JSF очень грамотно управляет ими, позволяя связать ваши ресурсы в зависимости от локали, библиотеки или ее номера версии (подробнее об этом читайте в разделе «Управление ресурсами» данной главы). Как вы увидите, страницы JSF также могут иметь доступ к неявным объектам, позволяющим компонентам использовать параметры запроса HTTP, информацию из cookies или заголовков HTTP.

HTML-компоненты JSF

Архитектура JSF была разработана так, чтобы не зависеть от любого протокола или языка разметки и позволить создавать приложения для HTML-клиентов, которые работают по протоколу HTTP. Пользовательский интерфейс конкретной веб-страницы создается при объединении компонентов. Компоненты обеспечивают конкретные функции для взаимодействия с конечным пользователем (метки, таблицы, флажки и т. д.). JSF предоставляет несколько встроенных компонентов HTML, которые покрывают большую часть общих требований.

Страница — это дерево компонентов. Каждый компонент представлен классом, который наследует от javax.faces.component.UIComponent и имеет свойства, методы и события. Компоненты в дереве связаны отношениями «родитель — потомок» с другими компонентами, начиная с корневого элемента дерева, который является экземпляром типа UIViewRoot (см. листинг 10.8). Сосредоточимся на использовании этих компонентов на веб-страницах. Пакет javax.faces.component.html описывает HTML-компоненты.

Команды

Команды (UICommand) — это элементы управления, на которые пользователь может нажать, чтобы вызвать действие. Такие компоненты, как правило, отрисовываются в виде кнопки или гиперссылки. В табл. 10.4 перечислены два тега команд, которые могут быть использованы.


Таблица 10.4. Теги команд
ТегКлассОписание
HtmlCommandButtonПредставляет HTML-элемент, предназначенный для ввода данных кнопки Отправить или Очистить
HtmlCommandLinkПредставляет HTML-элемент для гиперссылки, который действует как кнопка Отправить. Этот компонент должен быть помещен внутрь формы

Если на вашу страницу необходимо добавить кнопку Отправить или Очистить, изображения, на которых можно щелкнуть, или гиперссылки, вызывающие событие, то можно сделать это следующим образом:

>

>

>

>Гиперссылка

По умолчанию commandButton имеет тип submit, но он может быть изменен на reset (type="reset"). Если вы хотите превратить кнопку в изображение, не используя атрибут value (это название кнопки), вместо этого следует задать атрибут image, чтобы указать путь к рисунку, который вы хотите отобразить. Ниже приведен графический результат предыдущего кода.


Обе кнопки и ссылка имеют атрибут action для вызова метода компонента-подложки. Например, чтобы вызвать метод doNew() класса BookController, используйте следующее утверждение EL для того, чтобы указать его в атрибуте action:

>

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

>

Цели

Предыдущие компоненты команд вызывают действие на компонентах-подложках путем генерации HTTP-запроса POST. Если вам нужна кнопка или ссылка для перехода на другую страницу путем создания HTTP-запроса GET, используйте компоненты целей (UIOutcomeTarget), определенные в табл. 10.5. Отмечу, что эти компоненты позволяют добавлять страницы в закладки в приложениях JSF.


Таблица 10.5. Теги целей
ТегКлассОписание
HtmlOutcomeTargetButtonОтрисовывает элемент ввода данных HTML для кнопки (при нажатии создается HTTP-запрос GET)
HtmlOutcomeTargetLinkОтрисовывает элемент привязки HTML (при нажатии создается HTTP-запрос GET)

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

>

>

Графическое представление выглядит так, как и ожидалось.

Компоненты ввода

Компоненты ввода (UIInput) — это те компоненты, которые отображают текущее значение пользователю и позволяют ему вводить различные виды текстовой информации. Это могут быть текстовые поля, текстовые области или компоненты, предназначенные для ввода пароля и скрытых данных. Теги этих компонентов перечислены в табл. 10.6.


Таблица 10.6. Теги компонентов ввода
ТегКлассОписание
HtmlInputHiddenПредставляет HTML-элемент ввода для скрытых данных (полезен для переноса значений от страницы к странице вне сессии)
HtmlInputSecretПредставляет HTML-элемент ввода для паролей. При повторной загрузке страницы любое ранее введенное значение не будет отображено (из соображений безопасности), если только свойство redisplay не имеет значения true

Рекомендуем почитать
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 так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.