访问Map <long,map <string,=“”object =“”>&gt;的内容在jsp中使用键值</long,>

时间:2011-09-21 21:21:15

标签: java jsp jstl el

我有一个jsp页面,它接收这种类型的HashMap对象: Map<Long, Map<String, Object>>

此地图的示例如下:
foo = {1 = {id=1, response="someText"}, 2={id=99, response="random"}};

我试图在foo中迭代两个地图的内容,如下所示:

<c:forEach items="${fooMap.content}" var="outerMap">
    <c:forEach items="${outerMap.value}" var = "innerMap">
        <p>${innerMap.response}</p>
    </c:foreach>
</c:forEach>

但是这会抛出在类型java.util.HashMap上找不到“属性'响应'..... 有人请告诉我我做错了什么吗?

我知道我可以使用Map.EntrySet访问innerMap的内容。但我想使用特定的密钥访问该值。

1 个答案:

答案 0 :(得分:2)

${outerMap.value}返回Map<String, Object>,其中一个条目具有“响应”作为键。所以你需要从那里直接得到它,而不是在${innerMap}中迭代它的入口集。

<c:forEach items="${fooMap.content}" var="outerMap">
    <p>${outerMap.value.response}</p>
</c:forEach>

(更笨拙)替代方法是检查${innerMap}输入键:

<c:forEach items="${fooMap.content}" var="outerMap">
    <c:forEach items="${outerMap.value}" var="innerMap">
        <c:if test="${innerMap.key == 'response'}">
            <p>${innerMap.value}</p>
        </c:if>
    </c:foreach>
</c:forEach>

你现在还能把头包住吗? :)