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

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

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

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

你可能感兴趣的:(list)