[英]How to retrieve HashMap using JSTL forEach loop
我有一些要從具有地圖的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頁面在下拉列表中未顯示任何值。
嘗試訪問鍵和值。 當您說${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>
您可以在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>
你可以這樣嘗試
<c:forEach var="sampleMap" items="${data}">
Name: ${sampleMap.key} <br/>
Value: ${sampleMap.value} <br/>
</c:forEach>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.