如何找出JSF组件的component-family和renderer-type

时间:2012-08-11 06:19:25

标签: jsf renderer

如何找到JSF组件的组件系列和(默认)渲染器类型?

使用以下注释(覆盖自定义渲染器)时,必须使用以下信息:

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

我用谷歌搜索,了解了JSF规范和Ed Burn的书,但找不到我想要的东西。

1 个答案:

答案 0 :(得分:12)

以编程方式,只需打印UIComponent#getFamily()UIComponent#getRendererType()即可找到它们。

纪录片,您可以通过查看组件实现的javadoc找到它们。例如,<h:inputText>HtmlInputText类表示。渲染器类型可以在javadoc的介绍性文本的最后一段中找到:

  

默认情况下,rendererType属性必须设置为“javax.faces.Text”。

通过检查COMPONENT_FAMILY常量字段值(继承自UIInput)的值,可以找到组件系列。点击Fields inherited from class javax.faces.component.UIInput - COMPONENT_FAMILY - Constant Field Values

  

COMPONENT_FAMILYjavax.faces.Input


无关具体问题:无法通过@FacesRenderer注释覆盖默认的JSF渲染器。默认渲染器始终具有预定义。这是设计,另见issue 1748。您确实需要在<renderer> JSF 1.x方式中将它们显式注册为faces-config.xml

<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>
相关问题