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

【摘要】本文主要介绍及演示了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标签部分源代码:
Struts迭代器(iterator)遍历List常用的4种例子 struts2迭代器

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

  

爱华网本文地址 » http://www.aihuau.com/a/25101011/91773.html

更多阅读

领域模型-谈实体对象和值对象 js 遍历对象属性和值

对于实体Entity和值对象ValueObject是领域驱动设计里面两个重要的模型对象。所以有必要对两者的关系和区别进行理解。以下部分内容直接引用自《领域驱动设计》一书相关内容。首先对于实体Entity,实体核心是用唯一的标识符来定义,而不

文件操作CFile cfilefind 遍历文件夹

FC下的文件类文件操作的方法使用Visual C++编程,有如下方法进行文件操作:(1)使用标准C运行库函数,包括fopen、fclose、fseek等。(2)使用Win16下的文件和目录操作函数,如lopen、lclose、lseek等。不过,在Win32下,这些函数主要是为了和Win1

二叉树的应用详解 二叉树遍历代码详解

概述:平衡树——特点:所有结点左右子树深度差≤1排序树——特点:所有结点“左小右大字典树——由字符串构成的二叉排序树判定树——特点:分支查找树(例如12个球如何只称3次便分出轻重)带权树——特点:路径带权值(例如长度)最优树——是带权路

声明:《Struts迭代器iterator 遍历List常用的4种例子 struts2迭代器》为网友经济适用男分享!如侵犯到您的合法权益请联系我们删除