Iterator标签
该标签用于对集合、Map和数组进行迭代。
迭代LIst:
public String testList(){
Person person1 = new Person();
person1.setName("张三");
person1.setAge(23);
Person person2 = new Person();
person2.setName("李四");
person2.setAge(24);
Person person3 = new Person();
person3.setName("狗蛋");
person3.setAge(25);
List<Person> list = new ArrayList<Person>();
list.add(person1);
list.add(person2);
list.add(person3);
//将list存放到对象栈
ActionContext.getContext().getValueStack().push(list);
//将list存放到Map栈
ActionContext.getContext().put("personList", list);
return "iterator";
}
迭代方式:
<span style="white-space:pre"> </span><!-- 迭代对象栈的List -->
<table>
<tr>
<td>姓名</td>
<td>年龄</td>
</tr>
<s:iterator>
<tr>
<td>
<s:property value="name"/>
</td>
<td>
<s:property value="age"/>
</td>
</tr>
</s:iterator>
</table>
<!-- 迭代对象栈中的List -->
<table>
<tr>
<td>姓名</td>
<td>年龄</td>
</tr>
<s:iterator value="#personList">
<tr>
<td>
<s:property value="name"/>
</td>
<td>
<s:property value="age"/>
</td>
</tr>
</s:iterator>
</table>
——————————————————————————————————————————————————————————
迭代Map
<span style="white-space:pre"> </span>public String testMap(){
Person person1 = new Person();
person1.setName("张三");
person1.setAge(23);
Person person2 = new Person();
person2.setName("李四");
person2.setAge(24);
Person person3 = new Person();
person3.setName("狗蛋");
person3.setAge(25);
Map<String, Person> map = new HashMap<String, Person>();
map.put("person1", person1);
map.put("person2", person2);
map.put("person3", person3);
//将Map存放到对象栈
ActionContext.getContext().getValueStack().push(map);
//将Map存放到Map栈
ActionContext.getContext().put("map", map);
return "iterator";
}
迭代方式:
<span style="white-space:pre"> </span><!-- 迭代对象栈中的map -->
<table>
<tr>
<td>姓名</td>
<td>年龄</td>
</tr>
<s:iterator >
<tr>
<td>
<s:property value="value.name"/>
</td>
<td>
<s:property value="value.age"/>
</td>
</tr>
</s:iterator>
</table>
<!-- 迭代Map栈的中Map -->
<table>
<tr>
<td>姓名</td>
<td>年龄</td>
</tr>
<s:iterator value="#map">
<tr>
<td>
<s:property value="value.name"/>
</td>
<td>
<s:property value="value.age"/>
</td>
</tr>
</s:iterator>
</table>
总结:
1、value属性不写,默认迭代栈顶的元素。
2、value属性指向要迭代的List、Map或数组。
3、当前迭代的元素在栈顶。
4、var指向当前正在迭代的元素,在map栈中
5、status属性表示正在迭代的状态:
int getCount() 返回当前迭代的元素个数
int getIndex() 返回当前迭代元素的索引
boolean isEven() 返回当前迭代元素的索引是否是偶数
boolean isOdd() 返回当前迭代元素的索引是否是奇数
boolean isFirst() 返回当前迭代元素是否为第一个元素
boolean isLast() 返回当前迭代元素是否为最后一个元素