Чтобы использовать кастомный тег, вы объявляете его в дескрипторе библиотеки тегов (TLD). Файл TLD определяет, как кастомный тег используется на странице JavaServer Faces. Веб-контейнер использует TLD для валидации тега. Набор тегов, являющихся частью инструментария отрисовки HTML, определён в TLD HTML_BASIC, доступном в стандартной библиотеке тегов HTML JavaServer Faces.
Имя файла TLD должно заканчиваться на taglib.xml
. В примере Duke's Bookstore кастомные теги area
и map
определены в файле web/WEB-INF/bookstore.taglib.xml
,
Все определения тегов должны быть вложены в элемент facelet-taglib
в TLD. Каждый тег определяется элементом tag
. Вот определения тегов для компонентов area
и map
:
<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
...>
<namespace>http://dukesbookstore</namespace>
<tag>
<tag-name>area</tag-name>
<component>
<component-type>DemoArea</component-type>
<renderer-type>DemoArea</renderer-type>
</component>
</tag>
<tag>
<tag-name>map</tag-name>
<component>
<component-type>DemoMap</component-type>
<renderer-type>DemoMap</renderer-type>
</component>
</tag>
</facelet-taglib>
Элемент component-type
указывает имя, определённое в аннотации @FacesComponent
, а элемент renderer-type
определяет rendererType
, определеный в аннотации @FacesRenderer
.
Элемент facelet-taglib
также должен включать элемент namespace
, который определяет пространство имён, которое должно быть указано на страницах, использующих кастомный компонент. См. Использование кастомного компонента для получения информации об указании пространства имён на страницах.
Файл TLD находится в каталоге WEB-INF
. Кроме того, в дескриптор развёртывания (web.xml
) включена запись для идентификации файла дескриптора библиотеки кастомных тегов следующим образом:
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/bookstore.taglib.xml</param-value>
</context-param>