2013-01-31 16 views
11

Sto usando ui: repeat per generare tabelle. Con ui: ripetere è facile ottenere le righe numerate usando lo varStatus. Sto dipendendo dall'ID di riga da varStatus quando si chiama il backing bean per gestire la navigazione nell'elenco, ad esempio spostando un elemento verso l'alto o verso il basso nell'elenco.Indice riga JSF 2 dataTable senza dataModel

Ora mi piacerebbe creare un componente composito che costruisca un tavolo personalizzabile con tutte le funzionalità necessarie per contrassegnare le righe, spostandole su/giù, ecc. Per fare ciò, l'interfaccia utente: ripetizione non funzionerà come posso vedere un modo di gestire un numero diverso di colonne; Devo specificare i titoli in un posto e il corpo in un altro (e non ho raggiunto il punto conoscenza in cui posso creare un componente personalizzato). Quindi sono passato a datatable invece, usando questo significa specificare le intestazioni come facet nello stesso punto del contenuto del corpo.

Questo ha funzionato bene fino a quando non ho notato che per qualche motivo non c'erano più varStatus. Ho lavorato molto sulla gestione della presentazione delle liste senza alcun bisogno di un datamodel e non voglio iniziare a usarlo. C'è un modo per ottenere il numero di riga corrente così come viene visualizzato nella tabella, senza utilizzare datamodel?

Inoltre sto usando viewScope e se ho capito correttamente questo significa che non posso associare il dataTable al bean.

risposta

28

Basta associare la tabella alla vista stessa anziché a un bean.

<h:dataTable binding="#{table}" ...> 

Quindi è possibile utilizzare #{table.rowIndex} se necessario. Per esempio.

+1

Ho letto un altro post in cui era presente una soluzione, anche se pensavo che il binding = "# {table}" fosse una scorciatoia per il binding al bean. Non sapevo che fosse possibile. Grazie BalusC! – nivis

+0

Prego. – BalusC

+0

Ho pensato esattamente allo stesso modo di @nivis. Forse perché il valore dell'attributo 'var' NON ha bisogno dell'istruzione EL, ma il valore dell'attributo' binding' DOES. Avevo pregiudizio sul fatto che tutti i valori nominati all'interno dell'istruzione EL dovessero essere già dichiarati (da solo), e sentivo che dare un nome alla variabile (ad esempio 'table',' rowItem') NON dovrebbe accadere con le istruzioni EL. –