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

siv*_*636 4 jsf renderer

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

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

@FacesRenderer(componentFamily="",rendererType="")
Run Code Online (Sandbox Code Playgroud)

我用Google搜索了JSF规范和Ed Burn的书,但找不到我想要的东西.

Bal*_*usC 12

以编程方式,您可以通过打印UIComponent#getFamily()和找到它们UIComponent#getRendererType().

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

默认情况下,该rendererType属性必须设置为" javax.faces.Text".

可以通过检查COMPONENT_FAMILY常量字段值(从中继承UIInput)的值来找到组件系列.单击继承自类javax.faces.component.UIInputCOMPONENT_FAMILY字段- - 常量字段值

COMPONENT_FAMILY " javax.faces.Input"


具体问题无关:您无法通过@FacesRenderer注释覆盖默认的JSF渲染器.默认渲染器始终具有预定义.这是设计,另见问题1748.你真的需要明确登记他们作为<renderer>faces-config.xmlJSF的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>
Run Code Online (Sandbox Code Playgroud)