在平时使用 s:iterator 这个迭代标签一般我们都是把一个 相同类型的多个对象放入一个集合当中那么是否可以放入不相同的对象来迭代呢? 日常工作有时候可能是需要这样来简化程序的我今天测试了一下好像完全可以
第一步
我建立了两个不同的POJO类
public class Feng {private String lou;private String feng;}public class FengFeng {private String a;private String b;}当然需要提供他们的getter和setter方法
第二步
在struts的action中声明一个List 属性
private List li;
也提供setter方法
在相应的execute方法中将不同类型的对象加入li这个属性中
Feng f=new Feng();
fsetFeng(feng);
fsetLou(lou);
Feng f=new Feng();
fsetFeng(feng);
fsetLou(lou);
FengFeng a=new FengFeng();
asetA(a);
asetB(b);
FengFeng a=new FengFeng();
asetA(a);
asetB(b);
li=new ArrayList();
liadd(f);
liadd(f);
liadd(a);
liadd(a);
测试方便我手工实例化了
第三步
在页面迭代也就是最重要的部分我在s:iterator 中加入了一些判断从而实现了不同类型对象的迭代
<s:iterator value=li>
<s:if test=feng!=null><s:property value=feng/>!!<s:property value=lou/></s:if><s:if test=a!=null><s:property value=a/>!!<s:property value=b/>
</s:if></s:iterator>
页面显示效果如下
feng!!lou feng!!lou a!!b a!!b
哈哈!成功了! 这样就可以实现灵活的迭代了很实用哦!