11
votes

Comment utiliser JSTL Foreach directement sur les valeurs d'une carte?

J'ai essayé ce qui suit surprenant ne fonctionne pas, on dirait que .Values ​​ne fonctionne pas du tout dans JSTL: xxx pré>

La carte est définie comme ceci (puis enregistré dans le servletContext) : P>

Map<Integer, CustomObject> theMap = new LinkedHashMap<Integer, CustomObject>();


5 commentaires

Dupliqué possible de JSTL Accéder à une valeur de carte par clé


@duffy: Je comprends que l'OP veut itération sur toutes les valeurs sans connaître les clés.


@Balusc: oui je fais :-) Mais de toute façon je reçois les clés. Cela peut sembler étrange, mais dans ce cas, la clé est également incluse dans la valeur. La clé comme dans est la clé principale de l'objet de valeur.


Je suis totalement perdu maintenant. Alors ma réponse ne vous a pas aidé? Quelle est l'exigence fonctionnelle alors?


La réponse était absolument ok. Il n'y a pas de getvalues ​​(), et c'est le problème que j'ai. Devra travailler autour de ça :)


3 Réponses :


37
votes

Vous voulez donc itération sur les valeurs de la carte? Carte Code> n'a pas de getValues ​​() code> méthode, donc votre tentative ne fonctionne pas. Le code> donne un map.Entry code> retour sur chaque itération est à son tour getkey () code> et getvalue () code> méthodes. Donc, les éléments suivants doivent faire:

<c:forEach var="value" items="${theMap.values()}">
    Map value: ${value}<br/>
</c:forEach>


0 commentaires

9
votes

Vous pouvez itérer une carte dans JSTL comme suit xxx


0 commentaires

2
votes

Vous pouvez également utiliser ce type si nécessaire

<c:forEach var="key" items="${theMap.keySet()}" varStatus="keyStatus">
    <c:set var="value" value="${theMap[key]}" />
</c:forEach>


0 commentaires