如何找出 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>