51

我想获得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>

和 StackTrace:Property 'External' not found on type java.util.HashMap$Entry
我很确定确实存在这种密钥。

4

3 回答 3

94

如果您要做的只是获取地图中单个条目的值,则根本不需要遍历任何集合。稍微简化 gautum 的响应,您可以获得命名映射条目的值,如下所示:

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

其中 'map' 是集合,'key' 是您尝试为其提取值的字符串键。

于 2013-10-02T13:25:20.540 回答
4

你能试试下面的代码吗

<c:forEach var="hash" items="${map['key']}">
        <option><c:out value="${hash}"/></option>
  </c:forEach>
于 2013-09-13T18:56:45.630 回答
-1

我对上面提到的解决方案有疑问,因为指定字符串键会给我 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>    
于 2017-06-26T19:13:05.223 回答