2013-04-10 16 views
5

Sto utilizzando MyFaces 2.1.9 e PrimeFaces 3.5. Ho implementato un renderizzatore personalizzato per <p:inputText>. Funziona bene a casa con Tomcat. Ma questo non funziona con Websphere. Ho inserito i punti di interruzione nella classe di rendering personalizzata, ma non vengono mai colpiti. Non vedo nulla nei miei registri. Tuttavia, quando registro lo stesso renderer personalizzato su JSF standard <h:inputText>, allora funziona correttamente.Il rendering personalizzato per il componente PrimeFaces funziona bene in Tomcat, ma non in Websphere

Ho registrato come segue in 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> 

Come posso risolvere la registrazione del renderer personalizzato?

+1

Inizia con un punto di interruzione su 'RenderKit # addRenderer()'. – BalusC

+0

Grazie! Ora so che il mio renderer viene prima elaborato, quindi il normale riproduttore arriva in addREnderer e sovrascrive il mio! Come posso risolvere questo? – KTrum

+0

Ok, questo lo spiega davvero. Dov'è il tuo 'faces-config.xml'? In un file JAR del modulo personalizzato in '/ WEB-INF/lib' o direttamente in web /' WEB-INF'? Se in JAR, l'ordine di caricamento non è definito. Se viene caricato prima di PrimeFaces, si verifica questo problema. – BalusC

risposta

7

renderer personalizzati che ha bisogno di ignorare renderer del 3 librerie di componenti del partito deve essere registrato in webapp propria faces-config.xml, non in una faces-config.xml che è imballato in un altro JAR in /WEB-INF/lib pure. L'ordine di caricamento dei file JAR non è specificato, quindi può accadere che il renderizzatore personalizzato sia caricato e registrato prima dello quello della libreria di componenti di terze parti che desideri sovrascrivere, esattamente come hai fatto tu.

Problemi correlati