为什么80%的码农都做不了架构师?>>>

【摘要】本文主要介绍及演示了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 部分代码:

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>>实现了。

转载于:https://my.oschina.net/u/2358326/blog/417987

Struts迭代器(iterator)遍历List常用的4种例子 - 冯世杰相关推荐

  1. Java迭代器iterator遍历有条件删除对象

    Java迭代器iterator遍历有条件删除对象 在使用迭代器遍历对象并对对象使用删除操作时可能发生的问题指南 文章目录 Java迭代器iterator遍历有条件删除对象 前言 总结 前言 前不久在使 ...

  2. 【JAVASE小新】迭代器iterator遍历集合

    package Gather.CollectionArrayList;import java.util.ArrayList; import java.util.Collection; import j ...

  3. php 便利jq,jquery怎样遍历数组?jquery遍历数组常用的两种方式

    在jquery中,我们常用$().each和$.each()这两个方法来进行数组的遍历,$().each和$.each()这两种方法表面看起来好像差不多,但是,实际上这两个方法是有区别的,两个方法在针 ...

  4. java遍历List常用的两种方式

    如对一个String类型的列表 List<String> stringList = new ArrayList<>(); stringList.add("张三&quo ...

  5. java遍历一个map集合_Java遍历Map集合的四种方式

    Map 集合的遍历与 List 和 Set 集合不同.Map 有两组值,因此遍历时可以只遍历值的集合,也可以只遍历键的集合,也可以同时遍历.Map 以及实现 Map 的接口类(如 HashMap.Tr ...

  6. SE API第10/11天:集合 ——>ArrayListals、Iterator遍历迭代器、增强for、List集→subList、集合间转换asList、排序sort | Map相关

    一.Java 集合框架 0.介绍: (0)什么是集合 -集合与数组一样,可以保存一组元素,并且提供了操作元素的相关方法,使用更方便. (1)集合框架被设计成要满足以下几个目标: 该框架必须是高性能的. ...

  7. 1.10 Iterator(迭代器)遍历集合元素

    Iterator(迭代器)遍历Collection集合元素 Iterator(迭代器)是一个接口,它的作用就是遍历容器的所有元素,也是 Java 集合框架的成员,但它与 Collection 和 Ma ...

  8. Iterator(迭代器)遍历Collection集合元素

    Iterator(迭代器)是一个接口,它的作用就是遍历容器的所有元素,也是 Java 集合框架的成员,但它与 Collection 和 Map 系列的集合不一样,Collection 和 Map 系列 ...

  9. List遍历时删除与迭代器(Iterator)解惑

    文章目录 ArrayList 遍历时删除方法 for循环向后遍历的陷阱 增强型for循环(foreach)遇到的问题 使用迭代器进行遍历同时修改操作 iterator调用remove()方法为什么要先 ...

  10. 【java迭代器Iterator】获取单个元素,循环遍历和删除

    java迭代器Iterator 什么是Iterator 怎么获取Iterator对象 Iterator三个常用方法 E next() 获取单个元素 boolean hasNext() 可用于循环遍历 ...

最新文章

  1. 想转行学软件测试要注意哪些问题
  2. AutoCAD .NET API 之——DimStyleTableRecord 的属性列表
  3. 开机logo切换逻辑深入研究
  4. 最全Java锁详解:独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁
  5. ad软件one pin错误是啥意思_Unity3D 4.5 软件安装教程
  6. 用别的表格中数据进行计算机,tusimpleBI 做的图表,别的电脑可以打开吗?
  7. mysql55条_mysql学习笔记一
  8. 【绘图】matlab 绘制窗口分布
  9. 关于使用DFS,BFS的一些思考总结
  10. c 调用 android jar包,Unity调用AndroidStudio导出的Jar包
  11. Atitit. Java script 多重多重catch语句的实现and Javascript js 异常机制
  12. 计算机VFP基础知识,VFP基础教程章数据库系统基础知识4
  13. 大淘宝技术发布首个基于神经渲染的3D建模产品Object Drawer,现已向学术界与普通用户开放...
  14. 计算机管理-磁盘管理中进行扩展卷操作,管理磁盘diskpart命令
  15. 秒杀品牌数据线的开博尔USB3.1Gen2 Type-C数据线评测
  16. 使用Jmeter输出错误响应结果到日志
  17. python数据分析及可视化(九)pandas数据规整(分组聚合、数据透视表、时间序列、数据分析流程)
  18. Lua初学者(一)--Lua 简单教学
  19. 数据结构与算法——第一章——绪论
  20. 路由器的设置(路由模式)

热门文章

  1. jQuery JCrop插件的一个问题
  2. EasyUI - 操作 Tree 控件
  3. file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known
  4. poj3204Ikki's Story I - Road Reconstruction(最大流求割边)
  5. ORB-SLAM2双目开源框架 (3) LocalMapping解析
  6. CSS3特殊图形制作
  7. 图片延迟加载(lazyload)的实现原理
  8. 多语言样式容器内容超出父级宽度不换行显示
  9. 获取视图尺寸大小方法
  10. jQuery验证框架(五)验证器