2013-04-10 20 views
5

私はMyFaces 2.1.9とPrimeFaces 3.5を使用しています。 <p:inputText>のカスタムレンダラーを実装しました。これはTomcatで自宅でうまく動作します。しかし、これはWebsphereとの連携では機能しません。カスタムレンダラークラスにブレークポイントを配置しましたが、決してヒットしません。私は私のログにも何も見ない。しかし、標準のJSF <h:inputText>に非常に同じカスタムレンダラーを登録すると、正常に動作します。PrimeFacesコンポーネントのカスタムレンダラは、Tomcatでは正常に動作しますが、Websphereでは動作しません。

faces-config.xmlに次のように私はそれを登録した:

<render-kit> 
    <renderer> 
     <component-family>org.primefaces.component</component-family> 
     <renderer-type>org.primefaces.component.InputTextRenderer</renderer-type> 
     <renderer-class>xxx.xxx.xxx.MyInputRenderer</renderer-class> 
    </renderer> 
</render-kit> 

にはどうすればカスタムレンダラの登録をトラブルシューティングすることができますか?

+1

'RenderKit#addRenderer()'にブレークポイントを設定します。 – BalusC

+0

ありがとう!今度はレンダラーが最初に処理された後、通常のレンダラーがaddREndererに入って上書きされることがわかりました。これをどうすれば解決できますか? – KTrum

+0

さて、それは確かにそれを説明します。あなたの 'faces-config.xml'はどこですか? '/ WEB-INF/lib'のカスタムモジュールのJARファイルやwebappの'/WEB-INF'の中に直接ありますか? JARの場合、ロード順序は未定義です。 PrimeFacesの前にロードされている場合は、この問題が発生します。 – BalusC

答えて

7

サードパーティのコンポーネントライブラリのレンダリングをオーバーライドする必要があるカスタムレンダラーは、faces-config.xmlに登録する必要があります。faces-config.xmlに登録する必要はありません。の別のJARにも含まれています。 JARファイルの読み込み順序が不明なので、カスタムレンダラが読み込まれ、の前にのように、あなたが直面しているのと全く同じように、オーバーライドしたいサードパーティのコンポーネントライブラリの1つをロードすることがあります。

関連する問題