Также вы можете использовать этот тип при необходимости

робовал следующее, что удивительно не работает, похоже, .values ​​не работает вообще в jstl:

<c:forEach var="r" items="${applicationScope['theMap'].values}">

Карта определяется следующим образом (а затем сохраняется в ServletContext):

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

Как заставить это работать? Я действительно хотел бы избежать изменения того, что внутри цикла foreach.

 Yves29 мая 2011 г., 21:22
@BalusC: Да, знаю :-) Но все равно я получаю ключи. Это может звучать странно, но в этом случае ключ также включен в значение. Ключ как в <ключ, значение> является первичным ключом объекта значения.
 BalusC29 мая 2011 г., 21:24
Я полностью потерян сейчас. Так мой ответ тебе не помог? Каково функциональное требование тогда?
 BalusC29 мая 2011 г., 00:18
@ Duffy: я понимаю, что ОП хочет перебирать все значения, не зная ключей.
 Yves29 мая 2011 г., 21:28
Ответ был абсолютно в порядке. Нет getValues ​​(), и это проблема, которая у меня есть. Придется обойти это :)
 duffymo28 мая 2011 г., 23:54

Ответы на вопрос(3)

Вы можете повторить карту в JSTL, как показано ниже

<c:forEach items="${numMap}" var="entry">
  ${entry.key},${entry.value}<br/>
</c:forEach>

Итак, вы хотите перебрать значения карты?Map не имеетgetValues() метод, так что ваша попытка не работает.<c:forEach> даетMap.Entry вернуться на каждой итерации, которая в свою очередь имеетgetKey() а такжеgetValue() методы. Таким образом, следующее должно сделать:

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

Начиная с EL 2.2, с новой поддержкой для вызова не получающих методов, вы можете просто вызыватьMap#values() непосредственно:

<c:forEach var="value" items="${theMap.values()}">
    Map value: ${value}<br/>
</c:forEach>
Смотрите также:Как перебратьMap с помощью<c:forEach>?

Также вы можете использовать этот тип при необходимости

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

Ваш ответ на вопрос