我希望根据密钥获得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
我很确定那里有钥匙。
答案 0 :(得分:85)
如果您要做的就是获取地图中单个条目的值,则根本不需要遍历任何集合。稍微简化gautum的响应,您可以按如下方式获取命名映射条目的值:
<c:out value="${map['key']}"/>
其中'map'是集合,'key'是您尝试提取值的字符串键。
答案 1 :(得分:5)
请你试试下面的代码
<c:forEach var="hash" items="${map['key']}">
<option><c:out value="${hash}"/></option>
</c:forEach>
答案 2 :(得分:0)
我遇到了上面提到的解决方案的问题,因为指定字符串键会给我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>