在迭代中需要需要判断当前记录id是否与上一条记录的id相同,并进行相应处理,实现方式如下:
1.判断是否是第一条记录,如果是设置一个动态变量,并赋值
<s:if test="#st.First">
<s:set name="orderid" value="#order[0]"></s:set>
</s:if>
2.如果不是第一条记录,判断动态变量是否需当前id相同,并给动态变量再赋新值
<s:if test="#orderid!=#order[0]">
<s:set name="orderid" value="#order[0]"></s:set>
注:不同的标签头,可能使用“#”取值,或${}取值,可能会报错,报错时换一下试试
附代码:
<s:iterator value="#request.myorders" id="order" status='st'>
<s:if test="#st.First">
<s:set name="orderid" value="#order[0]"></s:set>
</s:if>
<s:if test="#orderid!=#order[0]">
<s:set name="orderid" value="#order[0]"></s:set>
订单号: <s:property value="#order[0]"/> 订单金额: <s:property value="#order[1]"/>
下单时间: <s:property value="#order[2]"/> 收货地址: <s:property value="#order[3]"/>
<s:property value="#order[4]"/><s:property value="#order[5]"/>
<s:property value="#order[6]"/> <s:property value="#order[7]"/>订单状态: <s:property value="#order[8]"/>
</s:if>
<br>
商品号: <s:property value="#order[9]"/>
商品单价: <s:property value="#order[10]"/>
购买数量: <s:property value="#order[11]"/>
<br>
</s:iterator>
//附:
s:iterator 标签有3个属性:
value:被迭代的集合id :指定集合里面的元素的id
status 迭代元素的索引
你可以用status(迭代元素的索引)来判断 #status.index == 3
2:索引的用法
如果指定了status,每次的迭代数据都有IteratorStatus的实例,它有以下几个方法
int getCount()返回当前迭代了几个元素
int getIndex()返回当前元素索引
boolean isEven()当然的索引是否偶数
boolean isFirst()当前是否第一个元素
boolean isLast()
boolean isOdd()当前元素索引是否奇数
<s:iterator value="{'a','b','c'}" id='char' status='st'>
<s:if test="#st.Even">
现在的索引是奇数为:<s:property value='#st.index'/>
</s:if>
当前元素值:<s:property value='char'/>
</s:iterator>