Получить значение из 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
Я уверен, что есть действительно такой ключ.
Ответы
Ответ 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>