我在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>
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>
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>
我不是问如何显示出来的问题,我是问数据如何用问题中的格式显示,
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
你也是用<br>分割数据的,不好。
我想用<tr><td>这样来分隔数据,不用<br>,因为和其他网页要保持风格一致呀!!
大家帮帮忙
value2ofkey1 value2ofkey2 value2ofkey3 ...
value3ofkey1 value3ofkey2 value3ofkey3
这些值在加入到list之前就计算好啊?比如:if(i==0) list1.add("...")else if(i==2)list2.add("...");
那个判断条件自己写,只给个思路!
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
汗,你在里面加个table。用tr循环不就OK了
然后就用同一个循环
假设: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>
貌似这个也不错。。多用几个table..是可以解决的
<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>