【摘要】本文主要介紹及演示了Struts迭代器(iterator)遍歷List常用的4種例子,基于MyEclipse開發環境,重點關注前后端代碼的實現,給出后端java代碼、前段struts標簽代碼,主要有如下4個例子:
1. 遍歷List<String>
2. 遍歷List<List<String>>
3. 遍歷UserEntity
4. 遍歷List<UserEntity>
圖1:遍歷Listd的4個例子運行結果
關鍵詞:Struts標簽,iterator迭代器,List<String>,List<List<String>>
1、遍歷List<String>
(1)后臺TestAction.java 部分代碼:
1 // TODO 給list賦值2 if (list==null) {3 list=new ArrayList<String>();4 list.add("劉備");5 list.add("關羽");6 list.add("張飛");7 list.add("趙云");8 }TODO 給list賦值
(2)前臺jsp+s標簽部分源代碼:
1 <%--List<String>遍歷--%> 2 <table width="242" height="256" border="1" cellpadding="1" 3 cellspacing="1"> 4 <caption> 5 List<String>遍歷 6 </caption> 7 <tr> 8 <%-- 9 說明:<s:iterator id="別名" value="后臺List變量名">10 <s:if test="#別名!=null">11 --%>12 <s:iterator id="li" value="list">13 <td>14 <s:if test="#li!=null">15 <s:PRoperty />16 </s:if>17 </td>18 </s:iterator>19 </tr>20 </table>List遍歷
2、遍歷List<List<String>>
(1)后臺TestAction.java 部分代碼:
1 // TODO 給listList賦值(二維列表List) 2 if (listList==null) { 3 listList=new ArrayList<List<String>>(); 4 List<String> li=new ArrayList<String>(); 5 li.add("姓名"); 6 li.add("勢力"); 7 li.add("職務"); 8 listList.add(li); 9 /*List為引用類型(以地址方式保存一維List對象),10 添加不同List到二維列表需再實例化 */ 11 li=new ArrayList<String>();12 li.add("劉備");13 li.add("蜀");14 li.add("老大");15 listList.add(li);16 li=new ArrayList<String>();17 li.add("關羽");18 li.add("蜀");19 li.add("老2");20 listList.add(li);21 li=new ArrayList<String>();22 li.add("張飛");23 li.add("蜀");24 li.add("老3");25 listList.add(li);26 li=new ArrayList<String>();27 li.add("趙云");28 li.add("蜀");29 li.add("大將");30 listList.add(li);TODO 給listList賦值(二維列表List)
(2)前臺jsp+s標簽部分源代碼:
1 <%--List<List<String>>遍歷--%> 2 <table width="242" height="256" border="1" cellpadding="1" 3 cellspacing="1"> 4 <caption> 5 List<List<String>>遍歷如下: 6 </caption> 7 <s:iterator value="#request.listList" status="st"> 8 <tr> 9 <s:iterator value="#request.listList.get(#st.index)">10 <td valign="middle" align="center">11 <s:property />12 </td>13 </s:iterator>14 </tr>15 </s:iterator>16 </table>
3、遍歷UserEntity
(1)后臺TestAction.java 部分代碼:
1 // TODO 給UserEntity賦值2 if (userEntity==null) {3 userEntity=new UserEntity("諸葛亮","男",37);4 }TODO 給UserEntity賦值
(2)前臺jsp+s標簽部分源代碼:
1 <%--UserEntity遍歷如下:--%> 2 <table width="242" height="256" border="1" cellpadding="1" 3 cellspacing="1"> 4 <caption> 5 UserEntity遍歷如下: 6 </caption> 7 <tr> 8 <%--<td><s:property value="#變量名.屬性名" /></td>--%> 9 <td>10 <s:property value="userEntity.name" />11 </td>12 <td>13 <s:property value="userEntity.sex" />14 </td>15 <td>16 <s:property value="userEntity.age" />17 </td>18 </tr>19 </table>View Code
4、遍歷List<UserEntity>
(1)后臺TestAction.java 部分代碼:
1 // TODO 給List<UserEntity>賦值 2 if (users==null) { 3 users=new ArrayList<UserEntity> (); 4 UserEntity user=new UserEntity("張飛","男",18); 5 users.add(user); 6 user=new UserEntity("李斯","男",19); 7 users.add(user); 8 user=new UserEntity("王武","男",20); 9 users.add(user);10 user=new UserEntity("小喬","女",21);11 users.add(user);12 }View Code
(2)前臺jsp+s標簽部分源代碼:
1 <%-- List<UserEntity>遍歷如下:--%> 2 <table width="242" height="256" border="1" cellpadding="1" 3 cellspacing="1"> 4 <caption> 5 List<UserEntity>遍歷如下: 6 </caption> 7 <tr> 8 <th> 9 姓名10 </th>11 <th>12 性別13 </th>14 <th>15 年齡16 </th>17 </tr>18 <s:iterator id="u" value="users">19 <%--20 <s:iterator id="別名" value="要遍歷的集合">21 users:對應后臺Action類的List<UserEntity> users;22 --%>23 <tr>24 <%--<td><s:property value="#別名.實體類屬性名" /></td>--%>25 <td>26 <s:property value="#u.name" />27 </td>28 <td>29 <s:property value="#u.sex" />30 </td>31 <td>32 <s:property value="#u.age" />33 </td>34 </tr>35 </s:iterator>36 </table>View Code
5、用法比較
它們遍歷顯示效果也類似,它們也有以下區別:
List<List<String>>由于列表沒有屬性需要借助迭代器的屬性status="st",如:
<s:iterator value="#request.listList" status="st"> <tr> <s:iterator value="#request.listList.get(#st.index)"> <td valign="middle" align="center"> <s:property /> </td></s:iterator></tr></s:iterator>
List<UserEntity>則簡單多,借用迭代器iterator的id、value屬性,再用<s:property value="#別名.實體類屬性名" />獲取
如:
<s:iterator id="u" value="users"> <tr> <td> <s:property value="#u.name" /> </td> <td> <s:property value="#u.sex" /> </td> <td> <s:property value="#u.age" /> </td> </tr></s:iterator>
遍歷方法各有長短,若不是多表聯接查詢 、顯示表格的列數已經固定, 一般用實體類(UserEntity)迭代的方式。相反,顯示的 數據表格行和列不確定,此時用實體類(UserEntity)迭代的方式很難實現, 只能用List<String>或List<List<String>>實現了。
新聞熱點
疑難解答