我在jsp页面中有以下循环:
<c:forEach var="i" begin="1" end="${ toLvvt }" step="1">
<c:set var="mapKey">${to.id}-${record.rId}-${record.opjakso}</c:set>
<c:if test="${MyMap[mapKey].v1s eq true}">
...do something...
</c:if>>
问题在于我想使用var i
获取地图对象值(上面v1s
),如下所示:v${i}s
但这是错误的。
我有地图Map<string, Object>
。对象具有布尔属性v1s,v1k,v2s,v2k ...
答案 0 :(得分:0)
编辑确定我更好地理解了这个问题,但我认为您尝试做的事情是不可能的:您应该尝试在地图上实施List getVs()
返回v{i}s
列表的值,然后在jsp中将其与value.vs[i]
一起使用。
为了记录,我的第一个答案是:
<c:forEach>
首先打算迭代集合,因此你应该尝试这样的事情:
<c:forEach var="entry" items="${MyMap}">
<c:if test="${entry.value.v1s}">
...do something...
</c:if>
</c:forEach>
如果您希望以某种方式对输出进行排序,则可能需要使用LinkedHashMap
或TreeMap
。您可能还想查看Display tag库。
答案 1 :(得分:0)
只需创建与创建mapKey
相同的方式。
E.g。
<c:forEach var="i" begin="1" end="${toLvvt}" step="1">
<c:set var="mapKey" value="${to.id}-${record.rId}-${record.opjakso}" />
<c:set var="property" value="v${i}s" />
<c:if test="${MyMap[mapKey][property]}">
..
</c:if>
</c:forEach>
(请注意我简化了其中一个)
答案 2 :(得分:-1)
使用Map键和值在JSP页面上获取地图数据。迭代地图的方法更简单。
示例
<c:forEach items="${toLvvt}" var="toMap">
<c:set var="mapKey" value="${toMap.key}" />
<c:set var="mapValue" value="${toMap.value}" />
<c:if test="${mapValue}">
..
</c:if>
</c:forEach>
。