我有一些数据要从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页面未在下拉列表中显示任何值。
答案 0 :(得分:0)
尝试访问键和值。当你说${sample}
时,它指的是地图的入口集。因此,您需要从条目中提取键和值。您也没有设置varibale,并且在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>
答案 1 :(得分:0)
您可以在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>
答案 2 :(得分:0)
你可以这样尝试
<c:forEach var="sampleMap" items="${data}">
Name: ${sampleMap.key} <br/>
Value: ${sampleMap.value} <br/>
</c:forEach>