为什么显示我想要的东西:
<c:forEach var="temp" items="${AvailableLessonBean.lessons['description']}">
<form action="" method="POST">
<tr>
<td>
<c:out value="${temp}"/>
</td>
显示在html表格中:
说明开始日期开始时间结束时间级别进行预订
滑雪板的假人
先进的雕刻技术
怎么不脱落拖车
Gnarliness Extreeeeeeeme
平行转动
如何用一个夹住一条断腿
越野技术
特技飞行
中级障碍赛
这并不会显示任何异常:
<c:forEach var="temp" items="${AvailableLessonBean.lessons}">
<form action="" method="POST">
<tr>
<td>
<c:out value="${temp['description']}"/>
</td>
由于这个原因,我没有留下头发!!
答案 0 :(得分:0)
再一次,你没有告诉我们这些物品是什么,这使得它无法回答。希望对你而言,我记得上一个问题的数据结构。
因此,AvailableLessonBean.getLessons()
会返回Map<String, List<String>>
。
在您的第一个代码段中,您将迭代AvailableLessonBean.lessons['description']
。这个EL代码的作用是它获得与密钥相关的值&#34;描述&#34;在地图中:
map.get("description")
工作正常。它返回List<String>
。它遍历该列表,并将列表的当前元素存储在名为temp
的变量中。并且在每次迭代时,它都会打印temp
。因此,这等同于以下Java代码:
List<String> list = availableLessonBean.getLessons().get("description");
for (String temp : list) {
out.println(temp);
}
在第二个代码段中,您将迭代地图本身。 JSTL指定当您遍历地图时,迭代地图的所有条目。每个条目都有一个键和一个值。因此,迭代等同于在Java中执行:
for (Map.Entry<String, List<String>> temp : availableLessonBean.getLessons().entrySet()) {
...
}
但是,您正试图访问temp["description"]
。这没有任何意义。 temp
是地图条目。地图条目有一个键和一个值。这就是全部。在这种情况下,密钥为String
,值为List<String>
。