Как узнать семейство компонентов и тип средства визуализации компонента JSF

Как я могу узнать семейство компонентов и тип средства визуализации (по умолчанию) компонента JSF?

Эта информация необходима, когда (переопределяя пользовательские средства визуализации) используется следующая аннотация:

@FacesRenderer(componentFamily="",rendererType="")

Я погуглил, просмотрел спецификацию JSF и книгу Эда Берна, но не смог найти то, что хотел.


person siva636    schedule 11.08.2012    source источник


Ответы (1)


Программно вы можете найти их, просто напечатав UIComponent#getFamily()< /a> и UIComponent#getRendererType().

Документальный, вы можете узнать их, просто заглянув в javadoc реализации компонента. Например, <h:inputText> представлен классом HtmlInputText. Тип рендерера можно найти в последнем абзаце вводного текста javadoc:

По умолчанию для свойства rendererType должно быть установлено значение «javax.faces.Text».

Семейство компонентов можно найти, проверив значение COMPONENT_FAMILY значения поля константы (которое унаследовано от UIInput). Пролистайте поля, унаследованные от классов javax.faces.component.UIInput - COMPONENT_FAMILY. - Постоянные значения полей

COMPONENT_FAMILY "javax.faces.Input"


Не связанный с конкретной проблемой: вы не можете переопределить средства визуализации JSF по умолчанию с помощью аннотации @FacesRenderer. Средство визуализации по умолчанию всегда будет иметь приоритет. Это предусмотрено дизайном, см. также проблему 1748. Вам действительно нужно зарегистрировать их явно как <renderer> в faces-config.xml способе JSF 1.x.

<render-kit>
    <renderer>
        <component-family>javax.faces.Input</component-family>
        <renderer-type>javax.faces.Text</renderer-type>
        <renderer-class>com.example.CustomTextRenderer</renderer-class>
    </renderer>
</render-kit>
person BalusC    schedule 11.08.2012
comment
Это подробный, полный и профессиональный ответ. Большое спасибо и отдельное спасибо за комментарии о конфигурации Faces-config.xml. Еще раз спасибо BalusC! - person siva636; 11.08.2012