Подтвердить что ты не робот

Получить значение из hashmap на основе ключа для JSTL

Я хочу получить значение HashMap на основе ключа.

HashMap<String, ArrayList<String>> map 
    = new HashMap<String, ArrayList<String>>();
ArrayList<String> arrayList = new ArrayList<String>();

map.put("key", arrayList);
request.setAttribute("key", map);

Что я сделал -

<c:forEach var="map" items="${requestScope.key}">
    <c:forEach var="hash" items="${map.value}">
        <option><c:out value="${hash}"/></option>
    </c:forEach>
</c:forEach>

Но, кажется, он печатает все, что я хочу сделать, это получить значение, зависящее от ключа: hash.key или что-то

UPDATE:
Я сделал что-то вроде этого, но он все еще не работает.

<c:forEach var="map" items="${requestScope.key}">
    <c:forEach var="hash" items="${map['key']}">
        <option><c:out value="${hash}"/></option>
    </c:forEach>
</c:forEach>

и StackTrace: Property 'External' not found on type java.util.HashMap$Entry
Я уверен, что есть действительно такой ключ.

4b9b3361

Ответ 1

если все, что вы пытаетесь сделать, это получить значение одной записи на карте, нет необходимости полностью перебирать какую-либо коллекцию. слегка упрощая ответ gautum, вы можете получить значение именованной записи карты следующим образом:

<c:out value="${map['key']}"/>

где "map" - это коллекция, а "ключ" - это строковый ключ, для которого вы пытаетесь извлечь значение.

Ответ 2

Не могли бы вы попробовать под кодом

<c:forEach var="hash" items="${map['key']}">
        <option><c:out value="${hash}"/></option>
  </c:forEach>

Ответ 3

У меня возникла проблема с упомянутыми выше решениями, поскольку указание строкового ключа даст мне javax.el.PropertyNotFoundException. Код, показанный ниже, работал у меня. В этом я использовал статус для подсчета индекса для каждого цикла и отображал значение индекса, которое меня интересует

<c:forEach items="${requestScope.key}"  var="map" varStatus="status" >
    <c:if test="${status.index eq 1}">
        <option><c:out value=${map.value}/></option>
    </c:if>
</c:forEach>