组件系列、组件类型和渲染器类型之间的关系是什么?
当我在 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>
此配置非常有效。但是,我不明白为什么渲染器注册时需要该行。在 中,组件和渲染器是连接的,恕我直言,为组件选择合适的渲染器应该就足够了。附加参数有什么用?<component-family>javax.faces.Panel</component-family>
my.taglib.xml
<component-family>
我做了谷歌研究,我得到的所有答案都说:“一个渲染器可以用来渲染多个组件。这些组件属于一个系列”。但这些说法并没有消除我的困惑。有人可以解释组件类型,组件系列和渲染器选择策略之间的关系吗?(希望有一个很好的例子。