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