使用s:iterator或c:foreach页面循环输出两个list

有这样的需求,两个list:
1.list包含属性X,值为1、2、3、4、5、6
2.list2包含属性Y,值为a、b、C、D、E、F
3.两个list的size相同
4.输出成(原来的大小),值为合并后的,即:1a、2b、3C、4D、5E、6F
方法是:通过struts的iterator和set、property标签,如下所示:
<s:iterator value="list1" status="status" step="1">		
/*以下是取得list2的第几个属性对象,并设置到request的范围共享*/
<s:set name="list2" value="#attr.l2[#attr.status.getIndex()]" scope="request"/>
<s:property value="#request.list1.x"/>
<s:property value="#request.list2.y"/>
</s:iterator>

下面是使用foreach实现的两个输出:
<c:forEach  items="${list1}" var="item" varStatus="status">
	<c:out value="${item.X}"></c:out>
	<c:out value="${list2[status.index].Y}"></c:out>
</c:forEach> 


另附:
jstl中的varStatus

和 var 属性一样, varStatus 用于创建限定了作用域的变量。不过,由 varStatus 属性命名的变量并不存储当前索引值或当前元素,而是赋予 javax.servlet.jsp.jstl.core.LoopTagStatus 类的实例。该类定义了一组特性,它们描述了迭代的当前状态,下面列出了这些特性:

特性         Getter                       描述
current    getCurrent()           当前这次迭代的(集合中的)项
index       getIndex()               当前这次迭代从 0 开始的迭代索引
count       getCount()             当前这次迭代从 1 开始的迭代计数
first          isFirst()                  用来表明当前这轮迭代是否为第一次迭代的标志
last          isLast()                  用来表明当前这轮迭代是否为最后一次迭代的标志
begin      getBegin()             begin 属性值
end         getEnd()                 end 属性值
step        getStep()                step 属性值



<c:foreach var="showBspSubTop" varstatus="i" begin="1" step="1" items="${ showBspSubTops }"></c:foreach>



猜你喜欢

转载自tiger-hu.iteye.com/blog/1032623