(一)struts2标签遍历集合
1、struts2的s:iterator 可以遍历 数据栈里面的任何数组,集合等等以下几个简单的demo:
s:iterator 标签有3个属性:
value:被迭代的集合
id :指定集合里面的元素的id
status:迭代元素的索引
var: 定义对象接收从集合里遍历出的每一个元素。同时其会自动转型
2:索引的用法
如果指定了status,每次的迭代数据都有IteratorStatus的实例,它有以下几个方法
<s:iterator 中的status 使用方法
1:#status.odd 当前元素索引是否奇数行
2:#status.even 当前元素索引是否偶数
行
3:#status.count 当前迭代了几个元素
4:#status.index当前元素索引,从0开始『#status.count=#status.index+1』
5:#status.first 当前是否第一个元素
6:#status.last 当前是否最后一个元素
7:#status.modules(int)当前行数取模
3、<s:iterator id="元素id" value="后台List变量名">
<s:property value="#变量名.属性名"/>
区别1:List<String>的遍历需要iterator迭代器如<s:iterator id="元素id" value="后台List变量名">,且不需要value属性直接用<s:property />获取列表元素;
区别2:UserEntity刚相反,不需要iterator迭代器,但需要value属性<s:property value="#变量名.属性名" />来获取列表元素。
遍历map:Map map = new HashMap();
List list = new ArrayList();
<s:iterator value="categories" var="c" >
<s:property value="#c.name"/>|
<s:property value="#c.description"/>|
<a href="admin/Category_updateInput?id=<s:property value="#c.id" />">修改</a>|
<a href="admin/Category_delete?id=<s:property value="#c.id" />">删除</a>
<br/>
</s:iterator>
- 在类中定义的集合类型如下:
- private String [] arryStr;
- private List<User> list;
- private Map<String,String> map;
- private Map<Integer,User> userMap;
- private Map<String,String[]> arrayMap;
- private Map<String,List<User>> userListMap;
- private List<Object[]> olist;
- <body>
- <center>
- <br/>======iterator遍历String 字符数组======<br/>
- <s:iterator value="arryStr" id="array">
- <s:property value="array"/><br/>
- </s:iterator>
- <div></div>
- <br/>======iterator遍历List集合======<br/>
- <table border="1" width="50%" cellpadding="0" cellspacing="0">
- <tr style="background-color: yellow">
- <td>id</td>
- <td>name</td>
- <td>pwd</td>
- <td>age</td>
- </tr>
- <s:iterator value="list" id="array">
- <tr>
- <td><s:property value="id"/></td>
- <td><s:property value="name"/></td>
- <td><s:property value="pwd"/></td>
- <td><s:property value="age"/></td>
- </tr>
- </s:iterator>
- </table>
- <br/>======iterator遍历Map中的String字符串======<br/>
- <s:iterator value="map" id="column">
- <s:property value="#column"/><br/>
- Key:<s:property value="key"/><br/>
- Value:<s:property value="value"/><br/>
- </s:iterator>
- <div></div>
- <br/>======iterator遍历Map中的User 对象(Object)======<br/>
- <table border="1" width="50%" cellpadding="0" cellspacing="0">
- <tr style="background-color: yellow">
- <td>key=value</td>
- <td>id</td>
- <td>name</td>
- <td>pwd</td>
- <td>age</td>
- </tr>
- <s:iterator value="userMap" id="column">
- <tr>
- <td><s:property value="#column"/></td>
- <td><s:property value="value.id"/></td>
- <td><s:property value="value.name"/></td>
- <td><s:property value="value.pwd"/></td>
- <td><s:property value="value.age"/></td>
- </tr>
- </s:iterator>
- </table>
- <br/>======iterator遍历Map中的String字符数组======
- <s:iterator value="arrayMap" id="column">
- <div><s:property value="#column"/></div>
- -------------------key:<s:property value="key"/>--------------------<br/>
- <s:iterator value="value" id="col">
- <s:property value="col"/><br/>
- </s:iterator>
- <div></div>
- </s:iterator>
- <br/>======iterator遍历Map中的List集合======
- <table border="1" width="50%" cellpadding="0" cellspacing="0">
- <tr style="background-color: yellow">
- <td>key</td>
- <td>id</td>
- <td>name</td>
- <td>pwd</td>
- <td>age</td>
- </tr>
- <s:iterator value="userListMap" id="column">
- <s:set var="total" name="total" value="#column.value.size"/>
- <s:iterator value="#column.value" id="col" status="st">
- <tr>
- <s:if test="#st.first"><td rowspan="${total}"><s:property value="#column.key"/></td></s:if>
- <td><s:property value="id"/></td>
- <td><s:property value="name"/></td>
- <td><s:property value="pwd"/></td>
- <td><s:property value="age"/></td>
- </tr>
- </s:iterator>
- </s:iterator>
- </table>
- <br/>======iterator遍历object[]中的List集合======
- <table border="1" width="50%" cellpadding="0" cellspacing="0">
- <tr style="background-color: yellow">
- <td>key</td>
- <td>id</td>
- <td>name</td>
- </tr>
- <s:iterator value="olist" id="value" status="st">
- <tr>
- <td><s:property value="olist[#st.index][0]"/></td>
- <td><s:property value="olist[#st.index][1]"/></td>
- <td><s:property value="olist[#st.index][2]"/></td>
- </tr>
- </s:iterator>
- </table>
- </center>
- </body>
(二)jstl标签遍历集合
(一)<c:forEach>用于循环遍历,输出所有的元素
使用<c:forEach>要先导入标签库:<%@taglib uri="http://Java.sun.com/jsp/jstl/core" prefix="c" %> 才可以以使用。
(二)<c:forEach>的参数及用法:
items 用于接收集合对象,
var 定义对象接收从集合里遍历出的每一个元素。同时其会自动转型
begin 定义遍历的开始位置,
end定义遍历的结束位置。begin 和end的引号必须写。
varStatus 表示当前集合的状态,可以访问当前集合元素的信息。
使用方法示例:
<c:forEach var="item" items="${webFrameworkList}">${item}</c:forEach>
循环遍历,输出一个范围类的元素。
<c:foreach items ="${lis}" var = "li " begin="2" end ="12">
${li}
</c:foreach>
int[] ages = { 1, 2, 3, 4, 5 }; // 普通数组,JSTL直接使用JSP赋值表达式来取
List<String> names = new LinkedList<String>(); // List
names.add("Biao");
names.add("彪");
names.add("雷");
request.setAttribute("names", names); // 添加到request
Set<String> set = new TreeSet<String>(); // Set
set.add("One");
set.add("One");
set.add("Two");
set.add("Three");
set.add("Set");
Map<String, String> map = new HashMap<String, String>(); // Map
map.put("1", "黄彪");
map.put("2", "丫头");
map.put("3", "哥哥");
map.put("4", "笨蛋");
List<User> users = new ArrayList<User>(); // JavaBean的List
users.add(new User("黄彪", "xxxxxx"));
users.add(new User("昊天", "xxxxxx"));
users.add(new User("姐姐", "yyyyyy"));
users.add(new User("丫头", "zzzzzz"));
session.setAttribute("users", users); // 添加到session
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Iterator Collections</title>
<style type="text/css">
table {
border-collapse: collapse;
border: 1px solid black;
}
td, th {
border: 1px solid black;
}
tr:nth-child(even) {
background: #eee;
}
</style>
</head>
<body>
<center>
遍历数组:
<c:forEach var="age" items="${ages}">
<c:out value="${age}" />
</c:forEach>
<br />
遍历List:
<c:forEach var="name" items="${names}">
<c:out value="${name}" />
</c:forEach>
<br />
遍历List:
<c:forEach var="name" items="${names}">
<c:out value="${name}" />
</c:forEach>
<br />
<br />
遍历Set:
<c:forEach var="entry" items="${sets}">
<c:out value="${entry}" />
</c:forEach>
<br />
遍历Map:
<table>
<tr>
<th>Key</th>
<th>Value</th>
</tr>
<c:forEach var="entry" items="${maps}">
<tr>
<td><c:out value="${entry.key}"/></td>
<td><c:out value="${entry.value}"/></td>
</tr>
</c:forEach>
</table>
<br />
遍历UserBean的List:
<table>
<tr>
<th>username</th>
<th>password</th>
</tr>
<c:forEach var="user" items="${users}">
<tr>
<td><c:out value="${user.username}"/></td>
<td><c:out value="${user.password}"/></td>
</tr>
</c:forEach>
</table>
</center>
</body>
</html>
int[] ages = { 1, 2, 3, 4, 5 }; // 普通数组,JSTL直接使用JSP赋值表达式来取
List<String> names = new LinkedList<String>(); // List
names.add("Biao");
names.add("彪");
names.add("雷");
request.setAttribute("names", names); // 添加到request
Set<String> set = new TreeSet<String>(); // Set
set.add("One");
set.add("One");
set.add("Two");
set.add("Three");
set.add("Set");
Map<String, String> map = new HashMap<String, String>(); // Map
map.put("1", "黄彪");
map.put("2", "丫头");
map.put("3", "哥哥");
map.put("4", "笨蛋");
List<User> users = new ArrayList<User>(); // JavaBean的List
users.add(new User("黄彪", "xxxxxx"));
users.add(new User("昊天", "xxxxxx"));
users.add(new User("姐姐", "yyyyyy"));
users.add(new User("丫头", "zzzzzz"));
session.setAttribute("users", users); // 添加到session
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Iterator Collections</title>
<style type="text/css">
table {
border-collapse: collapse;
border: 1px solid black;
}
td, th {
border: 1px solid black;
}
tr:nth-child(even) {
background: #eee;
}
</style>
</head>
<body>
<center>
遍历数组:
<c:forEach var="age" items="<%= ages %>">
<c:out value="${age}" />
</c:forEach>
<br />
遍历List:
<c:forEach var="name" items="<%= names %>">
<c:out value="${name}" />
</c:forEach>
<br />
遍历List:
<c:forEach var="name" items="${names}">
<c:out value="${name}" />
</c:forEach>
<br />
<br />
遍历Set:
<c:forEach var="entry" items="<%= set %>">
<c:out value="${entry}" />
</c:forEach>
<br />
遍历Map:
<table>
<tr>
<th>Key</th>
<th>Value</th>
</tr>
<c:forEach var="entry" items="<%= map %>">
<tr>
<td><c:out value="${entry.key}"/></td>
<td><c:out value="${entry.value}"/></td>
</tr>
</c:forEach>
</table>
<br />
遍历UserBean的List:
<table>
<tr>
<th>username</th>
<th>password</th>
</tr>
<c:forEach var="user" items="${users}">
<tr>
<td><c:out value="${user.username}"/></td>
<td><c:out value="${user.password}"/></td>
</tr>
</c:forEach>
</table>
</center>
</body>
</html>