2009-08-26 7 views
8

Qual è la sintassi per chiamare list.size() in un modello Facelets JSF 2.0 (ad esempio, utilizzando un elemento h: outputText)?Come si chiama List.size() da un modello di faccetta JSF 2.0?

+0

Eventuali duplicati: http://stackoverflow.com/questions/206161/jsf- lunghezza lista – seth

+0

@seth - Sebbene contenga una risposta ragionevole (che dovrebbe funzionare con JSF 2.0, sebbene la risposta sia precedente), sto facendo questa domanda specificatamente per scoprire se ci sono aggiornamenti a JSF 2.0 che potrebbero influenzare la soluzione. :) – jsight

risposta

22

ne dite di questo:

<h:outputText value="#{fn:length(someBean.someList)}" /> 

Avrai bisogno di fare riferimento al functions taglib nella tua pagina JSF (URI: http://java.sun.com/jsp/jstl/functions).

5

Non è un problema esattamente con JSF 2.0. Le specifiche JSF richiedono ancora una classe conforme alle specifiche del bean. Le classi di raccolta non lo fanno con il metodo .size(). Dovrebbe essere ancora .getSize(). Data la necessità di un modo "standard" per accedere ai valori delle classi, non lo faremo mai più in fretta in JSF. Qualcuno ha bisogno di fissare le classi di raccolta.

+0

IC ... Speravo che avessero rielaborato la sintassi delle espressioni per consentire chiamate di metodo. Potrebbe essere abusato, ma potrebbe facilmente aggirare casi come questo. :) Ancora non capisco perché il designer della classe di raccolta abbia scelto di fare le cose in questo modo. – jsight

5

Basta provare #{myBean.myList.size()}

+2

Questo non funzionerebbe con standard el. Ci sono però delle estensioni el (come jboss el) che permettono questa notazione. –

+2

Funzionerà su qualsiasi Java Application Server EE 6 – Lincoln

+0

Apparentemente non è il caso (con mio stupore): vedere http://community.jboss.org/thread/173971 – Kawu

2

Nota: Lo spazio dei nomi specifica per "fn" si aggiunge in questo modo:

<html xmlns="http://www.w3.org/1999/xhtml" 
     ... 
     xmlns:fn="http://java.sun.com/jsp/jstl/functions">