簡體   English   中英

如何使用JSTL forEach循環檢索HashMap

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM