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.UIInputCOMPONENT_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>