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>