Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Введение в создание кастомных компонентов

JavaServer Faces предлагает набор стандартных, многократно используемых компонентов, которые позволяют быстро и легко создавать пользовательские интерфейсы для веб-приложений. Эти компоненты в основном связаны отношением один-к-одному с элементами в HTML 4. Но часто для приложения требуется компонент, который имеет дополнительные функциональные возможности или совершенно новый компонент. JavaServer Faces позволяет расширять стандартные компоненты для изменения их функциональности или для создания кастомных компонентов. Возможность расширения активно используется обширной экосистемой сторонних библиотек компонентов, но их изучение выходит за рамки данного учебника. Чтобы больше узнать об этом важном аспекте использования JavaServer Faces, хорошей отправной точкой является поиск в Интернете по запросу «Библиотеки компонентов JSF».

Дополнительно к расширению функциональности стандартных компонентов разработчик компонентов может дать автору страницы возможность изменять внешний вид компонента на странице или изменять поведение слушателя. С другой стороны, разработчику компонента может потребоваться отобразить компонент не на настольный компьютер, а на другой тип клиентского устройства — смартфон или планшет. Благодаря гибкой архитектуре JavaServer Faces разработчик компонентов может отделить определение поведения компонента от его внешнего вида, делегировав отрисовку компонента отдельному отрисовщику. Таким образом, разработчик компонента может определить поведение кастомного компонента один раз, но создать несколько отрисовщиков, каждый из которых определяет свой способ отрисовки компонента для определённого типа клиентского устройства.

javax.faces.component.UIComponent — это класс Java, который отвечает за представление автономной части пользовательского интерфейса в течение фазы жизненного цикла обработка запросов. Он предназначен для представления значения компонента. За визуальное представление компонента отвечает javax.faces.render.Renderer. В любом представлении JavaServer Faces может быть несколько объектов одного и того же класса UIComponent, так же как в программе Java может быть несколько объектов класса Java.

JavaServer Faces позволяет создавать кастомные компоненты, расширяя класс UIComponent — родительский класс для всех стандартных компонентов пользовательского интерфейса. Кастомный компонент может использоваться везде, где может использоваться обычный компонент. Например, в составном компоненте. UIComponent идентифицируется двумя именами: component-family определяет общее назначение компонента (например, ввод или вывод) и component-type указывает конкретное назначение компонента, такого как поле ввода текста или командная кнопка.

Renderer является вспомогательным для UIComponent и определяет, как этот конкретный класс UIComponent должен отображаться на клиентском устройстве каждого типа. Отрисовщики идентифицируются двумя именами: render-kit-id и renderer-type. Инструментарий отрисовки — это просто набор, в который помещается определённая группа отрисовщиков, а render-kit-id идентифицирует группу. Большинство библиотек компонентов JavaServer Faces предоставляют свой собственный инструментарий отрисовки.

Объект javax.faces.view.facelets.Tag является вспомогательным для UIComponent и Renderer и позволяет автору страницы включать объект UIComponent в представление JavaServer Faces. Тег представляет собой комбинацию component-type и renderer-type.

Смотрите Комбинирование компонента, отрисовщика и тега для получения информации о взаимодействии компонентов, отрисовщиков и тегов.

В этой главе используется компонент карты изображения из примера Duke's Bookstore, чтобы объяснить, как можно создавать простые кастомные компоненты, кастомные отрисовщики и связанные с ними кастомные теги, а также позаботиться обо всех других деталях, связанных с использованием компонентов и отрисовщиков в приложении. См. главу 60 «Пример Duke's Bookstore» для получения дополнительной информации об этом примере.

В этой главе также описывается, как создавать другие кастомные объекты: конвертеры, слушатели и валидаторы. Также описывается, как связать значения и объекты компонентов с объектами данных и как связать кастомные объекты со свойствами Managed-бина.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)