Sto avendo un grosso problema ottenendo un compito estremamente semplice fatto in JSF. Il problema: ho oggetti, che hanno proprietà aggregate che possono variare di tipo da oggetto a oggetto. A seconda del tipo di proprietà, voglio utilizzare un diverso set di campi di input.<ui:include> con src dinamico ... completa follia
I componenti del sottotipo risiedono nei framework e vengono caricati su richiesta. A tal fine, io uso il seguente codice:
<h:panelGroup id="zusatzdaten">
<fieldset class="clear">
<legend>#{tickerUI.ticker.tickerDescription.label}
(#{tickerUI.ticker.tickerDescId})
</legend>
<h:panelGroup rendered="#{tickerUI.editComponentName != null}">
<ui:include src="#{tickerUI.editComponentName}"/>
</h:panelGroup>
</fieldset>
</h:panelGroup>
Il nome del componente esce TickerUI, che è di @SessionScope. Ora il bit abbagliante: quando viene caricato per la prima volta, viene visualizzato il sottocomponente corretto. Tuttavia, quando si utilizza un collegamento nella navigazione, che dovrebbe portare a includere un componente diverso, il contenuto NON viene aggiornato! Ciò si traduce in un errore, perché i dati ora sono un sottotipo diverso, ma i componenti del modulo sono ancora del precedente.
Quando si torna indietro dall'errore e si fa nuovamente clic sul collegamento, viene visualizzato il componente corretto. Ho registrato il valore di editComponentName e vengono restituiti i valori corretti. Questo è molto confuso. Perché è incluso il contenuto sbagliato quando il getter restituisce il nome del componente corretto all'attributo src?
Aiuto molto apprezzato.
'' piste durante il tempo di visualizzazione di compilazione, non durante la visualizzazione tempo di rendering. Vedi anche http://stackoverflow.com/questions/3342984/jstl-in-jsf2-facelets-makes-sense –
BalusC
Grazie. Ovviamente sono ancora nuovo di JSF e questo JSTL/JSF renderizzare le cose del tempo non è facile da comprendere. Ho trovato la soluzione sul tuo blog: ' javax.faces.PARTIAL_STATE_SAVING false param-value> context-param>' –