2012-03-19 19 views
5

voglio loop su un certo numero di "ospiti" e inserire un ID dynanimallydinamicamente assegnare gli ID di tag usando una variabile EL

<ui:repeat value="#{guestList}" var="guest"> 
    <p:inputText id="firstname_#{guest.uniqueID}" value="" label="Firstname" /> 
    <p:message for="firstname_#{guest.uniqueID}" /> 
</ui:repeat> 

Il problema è, che il <p:message /> non permette di risolvere firstname_#{guest.uniqueID}

javax.faces.FacesException - Impossibile trovare il componente "firstname_1" in vista. a org.primefaces.component.message.MessageRenderer.encodeEnd (MessageRenderer.java:41)

Funziona senza problemi se scrivo una costante all'interno del ciclo, e anche io sono sicuro che la variabile può essere risolto, poiché posso farlo uscire in quel ciclo.

Come posso impostare jsf o primefaces per risolvere questa variabile?

risposta

9

Non è possibile utilizzare le espressioni EL nell'attributo id.

Ma non è necessario preoccuparsi per l'unicità dei propri ID in ui: ripetere. JSF lo fa per te. Basta dare il vostro campo di input di un id "fisso" e fare riferimento a esso nel vostro p:message:

<ui:repeat value="#{guestList}" var="guest"> 
    <p:inputText id="firstname" value="" label="Firstname" /> 
    <p:message for="firstname" /> 
</ui:repeat> 
+0

Grazie per la risposta, ma il numero degli ospiti è una mera semplificazione del mio problema in quanto ho bisogno di tali ID per affrontare i campi a destra dentro il mio fagiolo. A meno che non ci sia un altro modo, per affrontare il mio bean in un altro modo, questa non è ancora la soluzione al mio problema. (Ho cercato di renderlo più chiaro nella mia domanda) – devsnd

+0

Non è chiaro il motivo per cui è necessario l'id nel backing bean. Hai lasciato vuoto l'attributo value. Dovrebbe essere usato per associare l'input a un campo di backing bean. Forse è quello di cui hai bisogno? –

+0

Hai ragione! Ora ho capito: dal momento che sto iterando attraverso tutti i miei "ospiti" comunque, posso assegnare dinamicamente i binding di valore nel mio ciclo. (Ci scusiamo per la confusione, ma in realtà il problema si verifica nelle profondità delle composizioni nidificate) – devsnd

Problemi correlati