你的位置:首页 > Java教程

[Java教程]sturuts标签遍历list的4种常见方法


【摘要】本文主要介绍及演示了Struts迭代器(iterator)遍历List常用的4种例子,基于MyEclipse开发环境,重点关注前后端代码的实现,给出后端java代码、前段struts标签代码,主要有如下4个例子:

1. 遍历List<String>

2. 遍历List<List<String>>

3. 遍历UserEntity

4. 遍历List<UserEntity>

 

图1:遍历Listd的4个例子运行结果                                  

图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&ltString&gt遍历 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&ltList&ltString&gt&gt遍历如下: 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&ltUserEntity&gt遍历如下: 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>>实现了。