JSF コンポーネントの component-family と (デフォルトの) renderer-type を調べるにはどうすればよいですか?
これらの情報は、次の注釈を使用する (カスタム レンダラーをオーバーライドする) ときに必要です。
@FacesRenderer(componentFamily="",rendererType="")
Google で検索し、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
"
具体的な問題とは関係ありません。アノテーションによってデフォルトの JSF レンダラーをオーバーライドすることはできません。@FacesRenderer
デフォルトのレンダラーが常に優先されます。これは仕様によるものです。 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>