我这里写的是一个小实例,一个用struts2标签迭代的实例。
我在做项目的时候碰到的,先是记录一个人的非免疫接种史,但是我们知道每个人的接种史都是不同的,有的人可能一条接种史的记录也没有,而有的人可能有十几条,于是做的时候就是有一个单独的table来记录这些数据,记录这些数据之后还要进行查询显示,于是用到了迭代。
我知道<s:iterator>的方式有很多种,我下面写的是我用的那一种。当然,我不会用我做的那个项目中的东西,而是另外写了一个小例子,道理是一样的。
先是写了一个Student类
public class Student {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
接着StudentAction类,本来数据应该是从数据库里面查询得到,我这里为了方便,就模拟了。
import java.util.ArrayList;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
public class StudentAction extends ActionSupport {
private List<Student> students;
@Override
public String execute() throws Exception {
Student student1 = new Student(),student2=new Student();
student1.setName("Lucy");
student1.setAge("15");
students=new ArrayList<Student>();
students.add(student1);
student2.setName("Lily");
student2.setAge("14");
students.add(student2);
return SUCCESS;
}
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
}
配置struts.xml文件
<package name="iterator" extends="struts-default" namespace="iterator"> <action name="iterator_test" class="StudentAction"> <result name="success">/iterator.jsp</result> </action> </package>
最后是iterator.jsp。这里需要说明的是theme这个属性。如果没有这个,那么排版是有问题的,不会对齐,因为struts2标签默认自动生成<td>
<table>
<tr>
<td>姓名:</td>
<td>年龄:</td>
</tr>
<s:iterator value="students">
<tr>
<td><s:label name="name" theme="simple"/></td>
<td><s:label name="age" theme="simple"/></td>
</tr>
</s:iterator>
</table>
这样就ok了。
转载于:https://blog.51cto.com/932814294/1323490