Aggiunta JSF UIComponent composito bambino componente rende nulla
-
27-09-2019 - |
Domanda
Ho un UIComponent
personalizzato, che rende bene quando viene chiamato direttamente dal modello di base facelet (credo che questo lo rende un figlio diretto di UIComponentBodyTag
). Tuttavia, quando viene richiamata all'interno di un componente composito, non succede nulla. Ottengo senza eccezioni, niente. Tutto il resto rende ok.
Così, mentre funziona:
<h:body>
<x:myUiComponent />
</h:body>
Questo non funziona:
<h:body>
<demo:uiComponentWrapper />
</h:body>
uiComponentWrapper.xhtml:
<cc:implementation>
Before [<x:myUiComponent />] After
</cc:implementation>
Esso stampa semplicemente come Before [] After
.
Per la mia logica, questo dovrebbe funzionare. Che cosa mi manca? Esecuzione Mojarra 2.0.2.
Soluzione
Sembra che UIComponent
di encodeAll(...)
viene chiamato quando viene aggiunto alla pagina normalmente. Tuttavia, encodeBegin(...)
è chiamato invece, quando il componente viene aggiunto come figlio di un componente composito. Il mio edificio componente è stato definito in encodeAll(...)
, che non è stato eseguito quando si aggiunge il componente come un bambino componente composito.
Quindi è solo diversi in contesti diversi. Per la ragione, perché è così, vedi domanda su esattamente questo .