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

Когда я изучаю разработку пользовательских компонентов в JSF, я запутался в связи между семейством компонентов, типом компонента и типом средства визуализации. Например, я зарегистрировал средство визуализации и пользовательский компонент, как показано ниже.

faces-config.xml :

<component>
    <component-type>study.faces.Div</component-type>
    <component-class>javax.faces.component.UIPanel</component-class>
</component>

<render-kit>
    <render-kit-id>HTML_BASIC</render-kit-id>
    <renderer>
        <component-family>javax.faces.Panel</component-family>
        <renderer-type>study.faces.DivRenderer</renderer-type>
        <renderer-class>com.study.ui.DivRenderer</renderer-class>
    </renderer>
</render-kit>

Я также зарегистрировал новый тег в файле my.taglib.xml , как показано ниже:

<tag>
    <tag-name>div</tag-name>
    <component>
        <component-type>study.faces.Div</component-type>
        <renderer-type>study.faces.DivRenderer</renderer-type>
    </component>
</tag>

Эта конфигурация работает очень хорошо. Однако я не понял, почему при регистрации средства визуализации требуется строка javax.faces.Panel . В my.taglib.xml компонент и средство визуализации связаны, и, IMHO, этого должно было быть достаточно, чтобы выбрать подходящее средство визуализации для компонента. Какая польза от дополнительного параметра ?

Я проводил исследования в Google, и все полученные ответы говорят примерно так: «Один модуль визуализации может использоваться для визуализации нескольких компонентов. Эти компоненты принадлежат одна семья". Но эти заявления не развеяли моего замешательства. Может ли кто-нибудь объяснить взаимосвязь между типом компонента, семейством компонентов и стратегией выбора средства визуализации? (Надеюсь, с хорошим примером.)

22
задан BalusC 6 December 2012 в 12:45
поделиться