JSP:如何在嵌套映射中通过键获取值?

JSP:如何在嵌套映射中通过键获取值?,jsp,Jsp,假设我有以下映射,我想按键打印嵌套映射中的值: Map<Integer, Map<String, someObject>> map = new HashMap<Integer, Map<String, someObject>>(); Map Map=newhashmap(); 因此,我的方法如下: <c:forEach var="item1" items="${map}" varStatus="idx1"> <c:for

假设我有以下映射,我想按键打印嵌套映射中的值:

Map<Integer, Map<String, someObject>> map = new HashMap<Integer, Map<String, someObject>>();
Map Map=newhashmap();
因此,我的方法如下:

<c:forEach var="item1" items="${map}" varStatus="idx1">
   <c:forEach var="item2" items="${item1.value}" varStatus="idx2">
       <td>${item2['A'].variableInSomeObject}</td>
       <td>${item2['B'].variableInSomeObject}</td>
   </c:forEach>
</c:forEach>

${item2['A'].variableInSomeObject}
${item2['B'].variableInSomeObject}
也试过

<c:out value = "${item2['A'].variableInSomeObject}"/> 

但它会导致一个错误。 请告诉我缺少什么。

当您使用
迭代地图时,迭代中的每个项目都是
地图条目的一个实例。每个项目都有
。对于项目
Map
键是
Integer
的实例,
值是
Map
的实例

假设您有以下映射和嵌套映射:

Map<Integer, Map<String, SomeObject>> outerMap = 
        new HashMap<Integer, Map<String, SomeObject>>();
Map<String, SomeObject> firstNestedMap = new HashMap<String, SomeObject>();
Map<String, SomeObject> secondNestedMap = new HashMap<String, SomeObject>();
例如,您可以填充地图,如下所示:

SomeObject firstSomeObject = new SomeObject();
firstSomeObject.setVariableInSomeObject(1);

SomeObject secondSomeObject = new SomeObject();
secondSomeObject.setVariableInSomeObject(2);

SomeObject thirdSomeObject = new SomeObject();
thirdSomeObject.setVariableInSomeObject(3);

SomeObject fourthSomeObject = new SomeObject();
fourthSomeObject.setVariableInSomeObject(4);

firstNestedMap.put("A", firstSomeObject);
firstNestedMap.put("B", secondSomeObject);

secondNestedMap.put("A", thirdSomeObject);
secondNestedMap.put("B", fourthSomeObject);

outerMap.put(1, firstNestedMap);
outerMap.put(2, secondNestedMap);
要迭代嵌套映射并获取值,请使用以下JSTL代码:

<table>
<c:forEach var="item1" items="${map}">
    <c:forEach var="item2" items="${item1.value}">
    <tr>
        <td><c:out value="${item2.value.variableInSomeObject}" /></td>
    </tr>
    </c:forEach>
</c:forEach>
</table>

因此,每次迭代时,
item1.value
将返回嵌套映射的实例,即
map
item2
将返回
SomeObject
的实例。表达式
${item2.value.variableInSomeObject}
将返回
整数
字段的实例

因此,您将获得:


你所说的第2项['A'是什么意思。是否要根据内部映射中的特定键“a”获取对象。是的,在迭代嵌套映射时,我要按特定键打印值。是否确定该特定对象的“variableInSomeObject”中存在值。
<table>
<c:forEach var="item1" items="${map}">
    <c:forEach var="item2" items="${item1.value}">
    <tr>
        <td><c:out value="${item2.value.variableInSomeObject}" /></td>
    </tr>
    </c:forEach>
</c:forEach>
</table>