我在jsp页面取得了一个Map<String, List<String>>类型的对象,想在<table>里显示出来如下:key1                      key2                     key3                key...
value1ofkey1             value1ofkey2            value1ofkey3          ...
value2ofkey1             value2ofkey2            value2ofkey3          ...
value3ofkey1             value3ofkey2            value3ofkey3          ...
...                      ...                     ...                   ...写了半天,写不出来,请赐教!!我这样写的,是错的
<table id="tableId" width="100%" cellspacing="1" cellpadding="3" bgcolor="#666666">
<tr>
<c:forEach items="${DataCache}" var="DataCache">
<td>${DataCache.key} </td>
</c:forEach>
</tr>
<c:forEach items="${DataCache}" var="DataCache">

<c:forEach items="${DataCache.value}" var="DataCacheValue" varStatus="state">
<tr <c:if test="${state.index%2!=0}">bgcolor="#DAECED"</c:if>>
<td bgcolor="#ffffff">${DataCacheValue}</td>
</tr>
</c:forEach>
</c:forEach>
</table>

解决方案 »

  1.   

    假设:List list2 = new Arraylist();
         List list3 = new ArrayList();
         ...
         Map map = new HashMap();
         map.put("1",list2);
         map.put("2",list3);
         ...
    则:
    <c:forEach items="${map}" var="mymap" > 
      <c:forEach items="${mymap.value}" var="xxx">
         ${xxx}
      </c:forEach> 
    </c:forEach>
      

  2.   

    其中mymap.value取到的就是Map <String, List <String>>中的List,如果要用到key,就用mymap.key
      

  3.   

    to zou_wei_forever :
    我不是问如何显示出来的问题,我是问数据如何用问题中的格式显示,
      

  4.   

    java:
    try {
    ArrayList list = new ArrayList();

    list.add("value1");
    list.add("value2");

    ArrayList list2 = new ArrayList();

    list2.add("value2-1");
    list2.add("value2-2");

    HashMap map = new HashMap();

    map.put("key1", list);
    map.put("key2", list2);

    request.setAttribute("map", map);
    } catch (Exception e) {
    e.printStackTrace();
    }jsp:<table border="1">
         <tr>
         <c:forEach var="m" items="${map}">
         <td>
         <table>
         <tr>
         <td>
         <c:out value="${m.key}"/>
         </td>
        
         </tr>
         <tr>
         <Td>
         <c:forEach var="mm" items="${m.value}">
         <c:out value="${mm}"/>
         <br>
         </c:forEach>
         </Td>
         </tr>
         </table>
         </td>
         </c:forEach>
         </tr>
         </table>效果:
    key1       key2
    value1     value2-1
    value2     value2-2 

      

  5.   

    to sunwei_07 :
    你也是用<br>分割数据的,不好。
    我想用<tr><td>这样来分隔数据,不用<br>,因为和其他网页要保持风格一致呀!!
    大家帮帮忙
      

  6.   

    换在<tr></td>不就行了,格式自己调一下
      

  7.   

    可不可以将value1ofkey1            value1ofkey2            value1ofkey3          ... 
    value2ofkey1            value2ofkey2            value2ofkey3          ... 
    value3ofkey1            value3ofkey2            value3ofkey3          
    这些值在加入到list之前就计算好啊?比如:if(i==0) list1.add("...")else if(i==2)list2.add("...");
    那个判断条件自己写,只给个思路!
      

  8.   

    这样在页面只要显示就可以了,比如:List list = new Arraylist(); 
                                  list.add("1");
                                  list.add("2");
                                  list.add("3");
                                  List list2 = new Arraylist(); 
                                  list.add("4");
                                  list.add("5");
                                  list.add("6");
                                  List list3 = new Arraylist(); 
                                  list.add("7");
                                  list.add("8");
                                  list.add("9");   
        map.put("1",list); 
        map.put("2",list2);
        map.put("3",list3);
    这样页面显示可能这样: 
                                     1  2   3
                                 4  5   6
                                 7  8   9
    但是,你这样加入的话:
                                     List list = new Arraylist(); 
                                  list.add("1");
                                  list.add("4");
                                  list.add("7");
                                  List list2 = new Arraylist(); 
                                  list.add("2");
                                  list.add("5");
                                  list.add("8");
                                  List list3 = new Arraylist(); 
                                  list.add("3");
                                  list.add("6");
                                  list.add("9");显示出来就是这样了:
                                       1  4  7
                                   2  5  8
                                   3  6  9
      

  9.   


    汗,你在里面加个table。用tr循环不就OK了
      

  10.   

    首先你那几个列表应该是等长的,不然没法这样格式罗列
    然后就用同一个循环
    假设:List list2 = new Arraylist(); 
        List list3 = new ArrayList(); 
        ... 
        Map map = new HashMap(); 
        map.put("1",list2); 
        map.put("2",list3); 
        ... 
    则: 
    <c:forEach items="${map}" var="mymap" > 
    var1=list1;  </c:forEach> 
    先把list全部取出来,共用一个循环读出<c:forEach items="${mymap.value}" var="xxx" varStatus="i"> 
      <tr>
    <td>${var1[i]} </td><td>${var2[i]} </td>
    </tr>
      </c:forEach> 
      

  11.   


    貌似这个也不错。。多用几个table..是可以解决的
      

  12.   

    <table border="1"> 
        <tr> 
        <c:forEach var="m" items="${map}"> 
        <td> 
        <table> 
        <tr> 
        <td> 
        <c:out value="${m.key}"/> 
        </td> 
        
        </tr> 
        <c:forEach var="mm" items="${m.value}"> 
           <tr><td> 
             <c:out value="${mm}"/>
            </td></tr> 
        </c:forEach>
        </table> 
        </td> 
        </c:forEach> 
        </tr> 
     </table>