打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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个例子运行结果
关键词: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>

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

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
遍历List集合的三种方法
List 列表迭代器:
Iterator和ListIterator的不同使用方法
Java面试手册:集合框架
竟然有一半的人不知道 for 与 foreach 的区别???
java范式与集合
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服