<c:forEach items="map" var="item" varStatus="s">
  <c:out value="${item[s.index]}"/>
</c:forEach>
其中items中的变量是一个Map,这样写输出都是空,但是<c:out value="${s.index}"/>,
<c:out value="${item['0']}"/>都是有数的,想请教一下 <c:out value="${item[s.index]}"/>
这种写法有什么错误?

解决方案 »

  1.   

    <c:forEach items='${map}' var='mapItem'>   <%-- Remember that items in a Hashtable don't necessarily        come out in the same order they went in. --%>        (<c:out value='${mapItem.key}'/>         <c:out value='${mapItem.value}'/>)</c:forEach>
      

  2.   

    写法好像是没错的,不过楼主可以把map换个名字试试很久没用JSTL了,不太记得我啫喱有个简单的例子,可以参考一下<c:forEach items="${vectors}" var="vector">
     <c:out value="${vector}"/>
    </c:forEach><=>java中的:
    for(int i =0 ; i < vectors.size() ; i++){
        out.println(vectors.get(i));
      

  3.   

    我的理解是这样的:var和varStatus意义差不多,都是一个局部变量,代表的含义也差不多,但是varstatus有状态,也就是说可以用index,count,等等,不过index,count也是类似begin,一样,是说varstatus从那里开始迭代,出现的值,还是迭代体内包含的值。与var没区别,这样,你的错误就好理解了,不过,我这个纯属个人观点,错与对我也模糊着!
      

  4.   

    map在输出的时候需要指定输出key还是value。你试试这样写:
    <c:forEach items="map" var="item"> 
      <c:out value="${item.value}"/> 
    </c:forEach> 
      

  5.   

    哈哈,你遍历的明明是一个map,你还想用下标访问?map的访问方式应该是
    map.key map.value这样的形式。
    这样写运行肯定是错的。<c:out value="${item[s.index]}"/> 
    除非你把map改成list就没问题
      

  6.   

    哈哈。楼上正解,如梦初醒啊,map不能遍历的!
      

  7.   

    var 和 varStart的用法是差不多的
      

  8.   

    在foreach中遍历hashmap的时候,需要${item.value},虽然你设置了varStatus="s"不能用${item[s.index]}的方式根据s.index去获得hashmap对应的值,首先hashmap没有索引,再次EL表达式中不支持带变量取值!
      

  9.   

    老大们 怎么从<c:forEach ></c:forEach> 中一次遍历取出两个对象来啊?
      

  10.   

    你太有才了,数组还行。map肯定没戏。
      

  11.   


    怎么会没戏啊?Map map = new HashMap();
    map.put("a","12345");
    map.put("b","abcde");<c:forEach items="${map}" var="mymap" >
       <c:out value="${mymap.key}" />
       <c:out value="${mymap.value}" />
    </c:forEach>