Get value from hashmap based on key to JSTL

JavaJspHashmapJstl

Java Problem Overview


I want to get the value of HashMap based on key.

HashMap<String, ArrayList<String>> map 
    = new HashMap<String, ArrayList<String>>();
ArrayList<String> arrayList = new ArrayList<String>();
    
map.put("key", arrayList);
request.setAttribute("key", map);

What i did is

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

But it seems it's printing everything, what i want to do is to get the value depends on key like: hash.key or something

UPDATE:
I did something like this but it still doesn't work

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

and the StackTrace: Property 'External' not found on type java.util.HashMap$Entry
I'm pretty sure that there is really that kind of key.

Java Solutions


Solution 1 - Java

if all you're trying to do is get the value of a single entry in a map, there's no need to loop over any collection at all. simplifying gautum's response slightly, you can get the value of a named map entry as follows:

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

where 'map' is the collection and 'key' is the string key for which you're trying to extract the value.

Solution 2 - Java

could you please try below code

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

Solution 3 - Java

I had issue with the solutions mentioned above as specifying the string key would give me javax.el.PropertyNotFoundException. The code shown below worked for me. In this I used status to count the index of for each loop and displayed the value of index I am interested on

<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>	

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionnewbieView Question on Stackoverflow
Solution 1 - JavajasonView Answer on Stackoverflow
Solution 2 - JavaGautamView Answer on Stackoverflow
Solution 3 - JavaMR ANDView Answer on Stackoverflow