dal codice:
<c:forEach items="${myBean.myMap.keySet}" var="var">
Questo non è andare a lavorare. Ciò richiede un metodo getKeySet()
su the Map
interface, ma non ce n'è.
Se l'ambiente supporta EL 2.2 (Servlet 3.0 contenitori, come Tomcat 7, Glassfish 3, ecc), allora si dovrebbe richiamare il metodo keySet()
direttamente invece di chiamare come una proprietà:
<c:forEach items="#{myBean.myMap.keySet()}" var="key">
<h:outputText value="#{key}"/>
</c:forEach>
Or se l'ambiente non supporta EL 2.2 ancora, allora si dovrebbe iterare la mappa stessa direttamente che dà un Map.Entry
instance su ogni iterazione, che a sua volta ha un getKey()
method, quindi questo dovrebbe fare così:
<c:forEach items="#{myBean.myMap}" var="entry">
<h:outputText value="#{entry.key}"/>
</c:forEach>
Nessuno dei precedenti funziona con <ui:repeat>
in quanto non supporta Map
né Set
. Supporta List
e solo l'array. La differenza tra <c:forEach>
e <ui:repeat>
consiste nel fatto che lo <c:forEach>
genera più componenti JSF durante il tempo di creazione della vista e che lo <ui:repeat>
crea un singolo componente JSF che genera l'output HTML più volte durante il tempo di rendering della vista.
ho capito. Pubblicherò tra 8 ore quando SO mi consente. – Adam