我這裏寫的是一個小實例,一個用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了。