如何找出 JSF 组件的组件系列和(默认)渲染器类型?
当(覆盖自定义渲染器)使用以下注释时,这些信息是必需的:
@FacesRenderer(componentFamily="",rendererType="")
我用谷歌搜索,浏览了 JSF 规范和 Ed Burn 的书,但找不到我想要的。
以编程方式,您只需打印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>