如何使用 JSTL forEach 循环检索 HashMap [重复]
Posted
技术标签:
【中文标题】如何使用 JSTL forEach 循环检索 HashMap [重复]【英文标题】:How to retrieve HashMap using JSTL forEach loop [duplicate] 【发布时间】:2014-08-25 12:38:36 【问题描述】:我有一些数据要从具有地图的 ModelandView 类发送。我映射数据并将其发送到我的 jsp 页面。但无法使用 jstl 标签检索数据。控制器正在将数据发送到指定的 jsp,但由于使用了 jstl 标记,因此未显示在指定的字段中。如果有人发现错误,那就太好了。
Controller.java
public ModelandView getData(@Context HttpServletRequest request)
Map<String,String> map=new HashMap<String,String>();
ModelandView responseView = new ModelandView("trackData",map);
//some code here
if (somecondition)
map.put("data",detailsVO.getVehicleId());
responseView.addAllObjects(map);
else
System.out.println("Not present");
return responseView;
trackData.jsp
<select class="testdata" id="listvehicle">
<c:forEach var="sample" items="$data">
<option> $sample</option>
</c:forEach>
</select>
jsp 页面未在下拉列表中显示任何值。
【问题讨论】:
【参考方案1】:尝试访问键和值。当您说$sample
时,它指的是地图的条目集。因此,您需要从条目中提取键和值。此外,您没有设置变量,而是在 for 循环中尝试访问变量名称 map
。也改变它ModelandView responseView = new ModelandView("trackData", "data", map);
并尝试下面的代码。
<select class="testdata" id="listvehicle">
<c:forEach var="sample" items="$data">
<option value="$sample.key"> $sample.value</option>
</c:forEach>
</select>
【讨论】:
我尝试了键和值。先生仍然没有任何结果 检查该变量名。它应该是items="$trackData"
而不是 items="$map"
它的变量命名。创建类似ModelandView responseView = new ModelandView("trackData", "data", map);
的模型并尝试上面的代码。第一个参数指定视图名称。第二个属性名称和第三个属性值。那应该可以解决它..【参考方案2】:
你可以这样试试
<c:forEach var="sampleMap" items="$data">
Name: $sampleMap.key <br/>
Value: $sampleMap.value <br/>
</c:forEach>
【讨论】:
请向问题作者解释为什么这会起作用。这无助于向他们展示他们的原始代码出了什么问题。在您的代码示例中添加说明。【参考方案3】:你可以在你的jsp中使用scriptlet:
<%@ page import ="java.util.*"%>
<% Map myMap = (Map) request.getAttribute("trackData"); %>
<select class="testdata" id="listvehicle">
<c:forEach var="entry" items="$myMap">
<option value="$entry.key"> $entry.value</option>
</c:forEach>
</select>
【讨论】:
如果我使用 scriplet,它会通过请求属性在控制台上正确地为我提供输出,但它不会更新 jsp 页面中的下拉列表 编辑答案以填充选择框而不是输出到页面 您需要在 jsp 中导入所需的类。尝试在 jsp 顶部添加以上是关于如何使用 JSTL forEach 循环检索 HashMap [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 JSTL forEach 循环的 varStatus 作为 ID