В дополнение к регистрации кастомных отрисовщиков (как описано в предыдущем разделе), вы также должны зарегистрировать кастомные компоненты, которые обычно связаны с кастомными отрисовщиками. Используйте аннотацию @FacesComponent, как описано в Создание кастомных классов компонентов, или элемент component файла конфигурации приложения.
Вот гипотетический элемент component из файла конфигурации приложения, который регистрирует AreaComponent:
<component>
<component-type>DemoArea</component-type>
<component-class>
dukesbookstore.components.AreaComponent
</component-class>
<property>
<property-name>alt</property-name>
<property-class>java.lang.String</property-class>
</property>
<property>
<property-name>coords</property-name>
<property-class>java.lang.String</property-class>
</property>
<property>
<property-name>shape</property-name>
<property-class>java.lang.String</property-class>
</property>
</component>
Атрибуты, указанные в теге component, переопределяют любые параметры в аннотации @FacesComponent.
Элемент component-type указывает имя, под которым должен быть зарегистрирован компонент. Другие объекты ссылаются на этот компонент по этому имени. Например, элемент component-type в конфигурации для AreaComponent определяет значение DemoArea, которое соответствует значению, возвращённому методомgetComponentType класса AreaTag.
Элемент component-class указывает полное имя класса компонента. Элементы property определяют свойства компонента и их типы.