日期:2014-05-17  浏览次数:20666 次

jsp怎么遍历2个list?
从页面set两个List,list1和list2.
现在要在jsp页面显示
JScript code

<tr>
    <td>column1</td>
    <td>column2</td>
    <td>column3</td>
    <td>column4</td>    
</tr>
<tr>
    ........
</tr>        


如果column1,column2的值在list1里,column3,column4的值在list2里。
下面的<tr>该怎么写呢?

------解决方案--------------------
这个,貌似不行,你用一个bean封装两个list中的对象的属性,合并成一个list然后循环,只能这样子
比如list<A> list1
A里面有两个属性column1,column2
list<B> list2
B里面有两个属性column3,column4
然后创建一个C
属性有column1,column2,column3,column4
然后
List<c> list3=new ArrayList();
for(int i=0;i<list1.size();i++){
A a=list1.get(i);
B b=list2.get(i);
C c=new C();
c.setColumn1(a.getColumn1)
c.setColumn2(a.getColumn2)
c.setColumn3(b.getColumn3)
c.setColumn4(b.getColumn4)
list3.add(c)
}

然后传递list3
在通过标签循环获取



}
------解决方案--------------------
<s:iterator value="#list1" id="d" status="st">
<s:property value="#d.key"/>
</s:iterator>

<s:iterator value="#list2" id="d" status="st">
<s:property value="#d.key"/>
</s:iterator>
------解决方案--------------------
2L的方法是行不通的 因为不止td循环 tr也要循环
所以想只在前台实现是不现实的
只能按照1L的方法来做
思路我说以下:创建一个新的javaBean newObject 将2个list里面的属性都放到这个新的javaBean中
然后将结果集存入一个存放新javaBean对象的list中 即 List<newObject> 
然后在前台循环一个list
sturts1的话是
<logic:iterator >这个标签来循环 
试试吧
------解决方案--------------------
二楼的方法应该是可行的,在遍历的时候每个c对象时加个<tr>就行
<%for(int i=0;i<list3.size();i++){
C c=list3.get(i);%>
<tr>
<td><%c.getColumn1 %></td>
<td><%c.getColumn2%></td>
<td><%c.getColumn3 %></td>
<td><%c.getColumn4 %></td>
</tr><%
}%>
大概这个样子。也不知道对不对
------解决方案--------------------
必须得用2楼的方法,把2个list合并成一个list
我一般在list里add的对象是hashmap,map.put(c1);map.put(c2);map.put(c3);map.put(c4);
list.add(map).
你要用标签的话 还是得用bean来存放4个字段