zoukankan      html  css  js  c++  java
  • Struts迭代器(iterator)遍历List常用的4种例子

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

    1. 遍历List<String>

    2. 遍历List<List<String>>
    3. 遍历UserEntity
    4. 遍历List<UserEntity>

    例子的详细代码请参考附件1,给出两个4个例子的运行截图(如下图1):
     图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遍历

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

    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>
    View Code

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

    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

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

    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

    注:遍历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>

      综合以上的对比分析:遍历方法各有长短,若不是多表联接查询、显示表格的列数已经固定一般用实体类(UserEntity)迭代的方式。相反,显示的数据表格行和列不确定,此时用实体类(UserEntity)迭代的方式很难实现,只能用List<String>或List<List<String>>实现了。

  • 相关阅读:
    mysql数据库汉字首字母简拼全拼
    window.showModalDialog刷新父窗口和本窗口的方法及注意
    c#.net语句e.Row.RowType == DataControlRowType.DataRow是什么含义?
    SQL 拿到一天内的数据
    在线脚本编辑器
    输入正确的邮箱地址
    jquery中的$(document).ready()方法和window.onload方法区别
    转载从XML文件中读取数据绑定到DropDownList
    GridView中DropDownList联动
    For 循环 和Foreach 的区别
  • 原文地址:https://www.cnblogs.com/jessefeng/p/3295891.html
Copyright © 2011-2022 走看看