如何找到JSF组件的组件系列和(默认)渲染器类型?
使用以下注释(覆盖自定义渲染器)时,必须使用以下信息:
@FacesRenderer(componentFamily="",rendererType="")
我用谷歌搜索,了解了JSF规范和Ed Burn的书,但找不到我想要的东西。
答案 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_FAMILY
“javax.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>