使用<s:iterator>标签
属性:
Value是从ActionContext中获取的集合key,不需要#
Var:是每次从集合中取值赋值的变量
使用的时候需要加#,#str 比如说需要输出这个变量:
<s:iterator value="strArr" var="str">
<s:property value="#str"/>
</s:iterator>
循环数组:
java代码:
public String arrLoop() throws Exception {
ActionContext ac = ServletActionContext.getContext();
//定义一个字符串数组
String [] strArr = {"renliang","nihao","AA","BB","cc"};
//将数组加入到action中
ac.put("strArr", strArr);
return super.execute();
}
jsp中的代码:
<s:iterator value="strArr" var="str">
<s:property value="#str"/>
</s:iterator>
循环list
java代码
public String listLoop() throws Exception {
ActionContext ac = ServletActionContext.getContext();
//定义一个List集合
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("ccc");
list.add("xxx");
list.add("bbb");
list.add("ddd");
ac.put("list", list);
return super.execute();
}
jsp中的代码:
<s:iterator value="list" var="plist">
<s:property value="#plist"/>
</s:iterator>
循环Map
java中的代码
public String mapTest() throws Exception {
ActionContext ac = ServletActionContext.getContext();
//定义一个Map
Map<String, Object> pm = new HashMap<String,Object>();
pm.put("person1", "p1");
pm.put("person2", "p2");
pm.put("person3", "p3");
pm.put("person4", "p4");
pm.put("person5", "p5");
ac.put("pm", pm);
return super.execute();
}
jsp中的代码:
<s:iterator value="pm" var="p">
<s:property value="#p"/>
</s:iterator>
如果集合中是对象,同样可以展示出对象的每一项属性
java代码:
public String execute() throws Exception {
ActionContext ac = ServletActionContext.getContext();
//定义一个list
List<Person> personList = new ArrayList<Person>();
/*
* 利用循环创建10个对象
*/
for(int i = 0 ; i <10; i++){
Person p = new Person(i, "liange", "火星"+i );
//将对象加入到list中
personList.add(p);
}
//加入action
ac.put("personList", personList);
return super.execute();
}
jsp代码:
<s:iterator value="personList" var="p">
<h6>可以分开取每个对象单独的属性</h6>
<s:property value="#p.age"/>
<s:property value="#p.name"/>
<s:property value="#p.address"/>
<hr>
</s:iterator>
对于对象集合循环
Status属性可以给循环设置参数
变量:
Index:当前循环的索引号,从0开始
Count:当前循环的顺序号,从1开始
First:是否是第一行
List:是否是最后一行
odd:是否是奇数
even:是否是偶数
begin:从数字几开始
end:到数字几结束
step:步长
<s:iterator value="personList" var="p" status="status">
<h6>可以分开取每个对象单独的属性</h6>
<s:property value="'年龄' + #p.age"/>
<s:property value="'名字' + #p.name"/>
<s:property value="'地址' + #p.address"/>
<s:property value="'索引' + #status.index"/>
<s:property value="'顺序' + #status.count"/>
<s:property value="'是否第一' + #status.first"/>
<s:property value="'是否最后' + #status.last"/>
<s:property value="'是否偶数' + #status.odd"/>
<s:property value="'是否奇数' + #status.even"/>
<hr>
</s:iterator>