2011-11-04 10 views
5

Quando si utilizza lo <a4j:support> come descritto nello RichFaces example, viene sempre visualizzato il seguente errore quando si modifica il valore del menu a discesa.Errore JSF "Previsto un tipo di componente figlio ... Trovato null."

Previsto un bambino tipo di componente di UISelectItem/UISelectItems per tipo javax.faces.SelectOne componente (myid). Trovato null.

Ecco il codice JSF:

<h:selectOneMenu id="selectId" valueChangeListener="#{cs.myListener}" value="#{cs.selectList.selectedItem}"> 
<f:selectItems value="#{cs.bundeslandList.selectItems}" /> 
<a4j:support event="onchange" reRender="otherFieldId" /> 
</h:selectOneMenu> 

<h:selectOneMenu id="otherFieldId"> 
<f:selectItems value="#{cs.bundeslandList.selectOtherField.selectItems}" /> 
</h:selectOneMenu> 

Dal cs.bundeslandList.selectOtherField.selectItems è almeno un vuoto ArrayList, sono certo che non può essere otherFieldIdnull.


Ho ridotto a zero l'intera pagina e non ricevo più l'errore. Il valueChangeListener viene chiamato correttamente ma sfortunatamente, il otherFieldId non verrà aggiornato dopo la chiamata. È svuotato. Ma durante il debug posso vedere che la proprietà corrispondente è piena di voci.

+0

Ancora lavorando su quello ... –

risposta

5

Il getter di <f:selectItems value> ha restituito ad un certo punto null. Non c'è altra ragione per questa eccezione. Probabilmente il flusso logico del codice del bean backing è assolutamente sbagliato.

Si noti che la creazione di questa proprietà static è una pessima idea. Sarà condiviso tra tutte le altre richieste sull'intera applicazione web. Vuoi renderlo basato su richiesta o in base alla sessione più alta.

+0

Siamo spiacenti, mi sono sbagliato sul 'statico'. –

+0

Vedere il mio post modificato per favore. –

+0

Questo è un problema diverso e tecnicamente dovrebbe andare in una nuova domanda. Il primo passo sarebbe quello di elaborare ciò che intendi con "non sarà aggiornato". Non è stato ri-reso ajax? O il '' getter ha appena restituito una lista vuota? – BalusC