Struts迭代器(iterator)遍历List常用的4种例子

1. 遍历List<String>

2. 遍历List<List<String>>

3. 遍历UserEntity

4. 遍历List<UserEntity>

例子的详细代码请参考附件1,给出两个4个例子的运行截图(如下图1):
 
                   图1:遍历Listd的4个例子运行结果
关键词:Struts标签,iterator迭代器,List<String>,List<List<String>>

 

1、遍历List<String>  

(1)后台TestAction.java 部分代码: 

         // TODO 给list赋值
         if (list==null) {
             list=new ArrayList<String>();
             list.add("刘备");
             list.add("关羽");
          list.add("张飞");
            list.add("赵云");
         }

(2)前台jsp+s标签部分源代码:

                     <%--List<String>遍历--%>
                     <table width="242" height="256" border="1" cellpadding="1"
                         cellspacing="1">
                         <caption>
                             List&ltString&gt遍历
                         </caption>
                         <tr>
                             <%--
                         说明:<s:iterator id="别名" value="后台List变量名">
                               <s:if test="#别名!=null">
                             --%>
                             <s:iterator id="li" value="list">
                                 <td>
                                     <s:if test="#li!=null">
                                         <s:property />
                                     </s:if>
                                 </td>
                             </s:iterator>
                         </tr>
                     </table>

<s:iterator value="strs">
 
  <s:property/><br>   </s:iterator> 或者: <s:iterator value="strs"var="var">    <s:propertyvalue="var"/><br>   </s:iterator>

注:遍历List<String>运行结果参考上图1(左上)

2、遍历List<List<String>>

(1)后台TestAction.java 部分代码: 

         // TODO 给listList赋值(二维列表List)
         if (listList==null) {
             listList=new ArrayList<List<String>>();
             List<String> li=new ArrayList<String>();
             li.add("姓名");
             li.add("势力");
             li.add("职务");
             listList.add(li);
             /*List为引用类型(以地址方式保存一维List对象),
             添加不同List到二维列表需再实例化    */        
             li=new ArrayList<String>();
             li.add("刘备");
             li.add("蜀");
             li.add("老大");
             listList.add(li);
             li=new ArrayList<String>();
             li.add("关羽");
             li.add("蜀");
             li.add("老2");
             listList.add(li);
             li=new ArrayList<String>();
             li.add("张飞");
             li.add("蜀");
             li.add("老3");
             listList.add(li);
             li=new ArrayList<String>();
             li.add("赵云");
             li.add("蜀");
             li.add("大将");
             listList.add(li);

(2)前台jsp+s标签部分源代码:

     <%--List<List<String>>遍历--%>
                     <table width="242" height="256" border="1" cellpadding="1"
                         cellspacing="1">
                         <caption>
                             List&ltList&ltString&gt&gt遍历如下:
                         </caption>
                         <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>
                     </table>

注:遍历List<List<String>>运行结果参考上图1(右上)

3、遍历UserEntity

(1)后台TestAction.java 部分代码: 


 // TODO 给UserEntity赋值
  if (userEntity==null) {
      userEntity=new UserEntity("诸葛亮","男",37);
  }

(2)前台jsp+s标签部分源代码:

<% -- UserEntity遍历如下: -- %>
< table width ="242" height ="256" border ="1" cellpadding ="1"
cellspacing ="1" >
< caption >
UserEntity遍历如下:
</ caption >
< tr >
<% --< td >< s: property value = " #变量名.属性名 " /></ td >-- %>
< td >
< s:property value ="userEntity.name" />
</ td >
< td >
< s:property value ="userEntity.sex" />
</ td >
< td >
< s:property value ="userEntity.age" />
</ td >
</ tr >
</ table >

注:遍历UserEntity运行结果参考上图1(左下)

4、遍历List<UserEntity>

(1)后台TestAction.java 部分代码: 

 // TODO 给List<UserEntity>赋值
     if (users==null) {
         users=new ArrayList<UserEntity> ();
         UserEntity user=new UserEntity("张飞","男",18);
         users.add(user);
         user=new UserEntity("李斯","男",19);
         users.add(user);
         user=new UserEntity("王武","男",20);
         users.add(user);
          user=new UserEntity("小乔","女",21);
         users.add(user);
     }
View Code

(2)前台jsp+s标签部分源代码:

 <%-- List<UserEntity>遍历如下:--%>
                     <table width="242" height="256" border="1" cellpadding="1"
                        cellspacing="1">
                         <caption>
                             List&ltUserEntity&gt遍历如下:
                         </caption>
                         <tr>
                             <th>
                                 姓名
                             </th>
                             <th>
                                 性别
                             </th>
                             <th>
                                 年龄
                             </th>
                         </tr>
                         <s:iterator id="u" value="users">
                             <%--
         <s:iterator  id="別名"  value="要遍历的集合">
         users:对应后台Action类的List<UserEntity> users;
         --%>
                             <tr>
                                 <%--<td><s:property value="#別名.实体类属性名" /></td>--%>
                                 <td>
                                     <s:property value="#u.name" />
                                 </td>
                                 <td>
                                     <s:property value="#u.sex" />
                                 </td>
                                 <td>
                                     <s:property value="#u.age" />
                                 </td>
                             </tr>
                         </s:iterator>
                     </table>

注:遍历List<UserEntity>运行结果参考上图1(右下)

5、用法比较

(1)比较List<String>和UserEntity

  它们遍历显示效果类似,但是细心的朋友会发现,它们主要有以下区别:
  区别1:List<String>的遍历需要iterator迭代器如<s:iterator id="别名" value="后台List变量名">,且不需要value属性直接用<s:property />获取列表元素;
  区别2:UserEntity刚相反,不需要iterator迭代器,但需要value属性<s:property value="#变量名.属性名" />来获取列表元素。

(2)比较List<List<String>>和List<UserEntity>

  它们遍历显示效果也类似,它们也有以下区别:
  区别1: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>

  区别2: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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值