4

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

当(覆盖自定义渲染器)使用以下注释时,这些信息是必需的:

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

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

4

1 回答 1

12

以编程方式,您只需打印UIComponent#getFamily()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"


与具体问题无关:您不能通过@FacesRenderer注释覆盖默认的 JSF 渲染器。默认渲染器总是优先。这是设计使然,另请参阅issue 1748。您确实需要以 JSF 1.x 的方式显式注册<renderer>它们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>
于 2012-08-11T12:08:59.560 回答