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个例子运行结果

关键词: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>

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     }

(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>

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

时间: 2024-08-09 07:40:35

sturuts标签遍历list的4种常见方法的相关文章

Python爬虫突破封禁的6种常见方法

转 Python爬虫突破封禁的6种常见方法 2016年08月17日 22:36:59 阅读数:37936 在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长.今天大众好像更倾向于用"网络数据采集",有时会把网络数据采集程序称为网络机器人(bots).最常用的方法是写一个自动化程序向网络服务器请求数据(通常是用HTML表单或其他网页文件),然后对数据进行解析,提取需要的信息. 本文假定读者已经了解如何用代码来抓取一个远程的URL,并具备表单如何提交及JavaScrip

数组去重的几种常见方法?

数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ function uniq(array){ var temp = []; //一个新的临时数组 for(var i = 0; i < array.length; i++){ if(temp.indexOf(array[i]) == -1){ temp.push(array[i]); } } retur

JS数组去重的几种常见方法

JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ function uniq(array){ var temp = []; //一个新的临时数组 for(var i = 0; i < array.length; i++){ if(temp.indexOf(array[i]) == -1){ temp.push(array[i]); } } ret

性能测试的几种常见方法

性能测试的几种常见方法(转) 负载测试:负载测试是用户观点的测试行为.简单说来就是负载测试就是让系统在一定得负载压力下进行正常的工作,观察系统的表现能否满足用户的需求. 用户的需求从何而来?需求分析--特指性能测试的需求分析.由此看来需求分析是相当重要的. 负载测试是站在用户的角度去观察在一定条件下软件系统的性能表现. 负载测试的预期结果是用户的性能需求得到满足.此指标一般体现为响应时间.交易容量.并发容量.资源使用率等. 负载测试也是最常用的性能测试方法,因此也有不少人将负载测试混淆为性能测试

内存数据持久化的两种常见方法

内存数据持久化的两种常见方法: 1.将内存数据定期dump到磁盘 优点:效率高,操作简便 缺点:会损失部分数据 2.利用类似于mysql的binlog日志的方式,记录更新操作,需要时回放数据 优点:可保证数据完整性 缺点:会损失部分性能,实现稍微复杂点 redis实现了这两种方式

黑盒技术生成测试用例几种常见方法

因为实验还没做,所以无法写实验报告.在这里我将简述几种常见的黑盒测试方法. 黑盒测试,又称功能测试或者数据驱动测试.是把测试对象看作一个黑盒子.利用黑盒测试法进行动态测试时,需要测试软件产品的功能.不需要测试软件产品的内部结构和处理过程.   采用黑盒技术设计的测试用例方法有: 等价类划分方法 边界值分析 错误推测 因果图方法 判定表驱动分析方法 正交实验设计方法 功能图分析方法 等价类划分: 把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一个子集中选取少数具有代表性的数据作为测试

为何大量网站不能抓取?爬虫突破封禁的6种常见方法

在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长.今天大众好像更倾向于用“网络数据采集”,有时会把网络数据采集程序称为网络机器人(bots).最常用的方法是写一个自动化程序向网络服务器请求数据(通常是用 HTML 表单或其他网页文件),然后对数据进行解析,提取需要的信息. 本文假定读者已经了解如何用代码来抓取一个远程的 URL,并具备表单如何提交及 JavaScript 在浏览器如何运行的机制.想更多了解网络数据采集基础知识,可以参考文后的资料. 在采集网站的时会遇到一些比

总结 清除浮动的四种常见方法

1.使用空标签清除浮动. 我用了很久的一种方法,空标签可以是div标签,也可以是P标签.这种方式是在需要清除浮动的父级元素内部的所有浮动元素后添加这样一个标签清除浮动,并为其定义CSS代码:clear:both.此方法的弊端在于增加了无意义的结构元素. ps:对于使用额外标签清除浮动(闭合浮动元素),是W3C推荐的做法.至于使用<br />元素还是空<div></div>可以根据自己的喜好来选(当然你也可以使用其它块级元素).不过要注意的是,<br />本身

html中设置锚点定位的几种常见方法(#号定位)

在html中设置锚点定位我知道的有几种方法,在此和大家分享一下: 1.使用id定位: <a href="#1F">锚点1</a> <div id="1F"> <p> 11111111111 </br> 11111111111 </br>11111111111 </br>11111111111 </br>11111111111 </br>11111111111