如何在JSP中访问java map对象

时间:2012-02-15 11:47:34

标签: java jsp jstl

我在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 ...

3 个答案:

答案 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>

如果您希望以某种方式对输出进行排序,则可能需要使用LinkedHashMapTreeMap。您可能还想查看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>