从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什么的

更新:
我做了这样的事情,但它仍然无法正常工作

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

Property 'External' not found on type java.util.HashMap$Entry StackTrace: Property 'External' not found on type java.util.HashMap$Entry
我非常肯定,这真的是那种钥匙。

如果你所要做的只是获得地图中单个条目的值,那么根本就不需要循环任何集合。 略微简化gautum的回应,你可以得到一个命名的地图项的值如下:

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

其中'map'是集合,'key'是您尝试提取值的string键。

你可以请尝试下面的代码

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

我有上述解决scheme的问题,因为指定string键会给我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>