Изучаем 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 перечислены два тега команд, которые могут быть использованы.
Тег | Класс | Описание |
---|---|---|
HtmlCommandButton | Представляет HTML-элемент, предназначенный для ввода данных кнопки Отправить или Очистить | |
HtmlCommandLink | Представляет HTML-элемент для гиперссылки, который действует как кнопка Отправить. Этот компонент должен быть помещен внутрь формы |
Если на вашу страницу необходимо добавить кнопку Отправить или Очистить, изображения, на которых можно щелкнуть, или гиперссылки, вызывающие событие, то можно сделать это следующим образом:
>
>
>
>
По умолчанию commandButton имеет тип submit, но он может быть изменен на reset (type="reset"). Если вы хотите превратить кнопку в изображение, не используя атрибут value (это название кнопки), вместо этого следует задать атрибут image, чтобы указать путь к рисунку, который вы хотите отобразить. Ниже приведен графический результат предыдущего кода.
Обе кнопки и ссылка имеют атрибут action для вызова метода компонента-подложки. Например, чтобы вызвать метод doNew() класса BookController, используйте следующее утверждение EL для того, чтобы указать его в атрибуте action:
>
>··Создать новую книгу
>
Цели
Предыдущие компоненты команд вызывают действие на компонентах-подложках путем генерации HTTP-запроса POST. Если вам нужна кнопка или ссылка для перехода на другую страницу путем создания HTTP-запроса GET, используйте компоненты целей (UIOutcomeTarget), определенные в табл. 10.5. Отмечу, что эти компоненты позволяют добавлять страницы в закладки в приложениях JSF.
Тег | Класс | Описание |
---|---|---|
HtmlOutcomeTargetButton | Отрисовывает элемент ввода данных HTML для кнопки (при нажатии создается HTTP-запрос GET) | |
HtmlOutcomeTargetLink | Отрисовывает элемент привязки HTML (при нажатии создается HTTP-запрос GET) |
Если вам нужно перейти с одной страницы на другую, не вызывая компоненты-подложки, можно использовать эти компоненты следующим образом
>
>
Графическое представление выглядит так, как и ожидалось.
Компоненты ввода
Компоненты ввода (UIInput) — это те компоненты, которые отображают текущее значение пользователю и позволяют ему вводить различные виды текстовой информации. Это могут быть текстовые поля, текстовые области или компоненты, предназначенные для ввода пароля и скрытых данных. Теги этих компонентов перечислены в табл. 10.6.
Тег | Класс | Описание |
---|---|---|
HtmlInputHidden | Представляет HTML-элемент ввода для скрытых данных (полезен для переноса значений от страницы к странице вне сессии) | |
HtmlInputSecret | Представляет HTML-элемент ввода для паролей. При повторной загрузке страницы любое ранее введенное значение не будет отображено (из соображений безопасности), если только свойство redisplay не имеет значения true |
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.