4

JSF コンポーネントの component-family と (デフォルトの) renderer-type を調べるにはどうすればよいですか?

これらの情報は、次の注釈を使用する (カスタム レンダラーをオーバーライドする) ときに必要です。

@FacesRenderer(componentFamily="",rendererType="")

Google で検索し、JSF 仕様と Ed Burn の本を調べましたが、欲しいものが見つかりませんでした。

4

1 に答える 1

12

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>
于 2012-08-11T12:08:59.560 に答える