如何使用JSTL forEach循环检索HashMap

时间:2014-07-04 08:23:23

标签: java jsp spring-mvc jstl

我有一些数据要从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页面未在下拉列表中显示任何值。

3 个答案:

答案 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>