JSTL循环和迭代操作


在JSP中最常见的任务之一是使用Java forwhile循环输出一组数据。

通常这样子会导致创建了一个非常不容易阅读的包含大括号的JSP页面
同时,如果发生了错误,找到问题的代码很难。

幸运的是,JSTL为循环和迭代提供了两个有用的操作:

<c:forEach>

<c:forEach>操作非常有用。可以在集合上循环,也可以重复多次。

在集合上使用<c:forEach>进行循环

1
2
3
4
5
<c:forEach(var = "var"
items="collection"
varStatus="varStatusName">
<%-- processing of each item here --%>
</c:forEach>
  • 前两个属性是必需的。
  • 在items属性中指定一个集合,
  • 在var属性中指定集合中的每个项。
  • varStatus属性是可选的。varStatus属性是实现接口LoopTagStatus的类的实例。
  • varStatus属性提供了一组有用的属性,例如begin、end、current、index和count。

在集合上使用forEach示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<%@page contentType="text/html"
pageEncoding="UTF-8"
import="jsptutorial.*,java.util.*"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<title>使用c:forEach循环</title>
</head>
<body>
<%
ArrayList<Person> list = new ArrayList<Person>();
Person p1 = new Person("theITroad");
Person p2 = new Person("JSP");
list.add(p1);
list.add(p2);
request.setAttribute("list", list);
%>
<c:forEach var="person" items="${requestScope.list}">
<c:out value="${person.name}" />
</c:forEach>
</body>
</html>

使用<c:forEach>进行多次交互

语法如下:

1
2
3
4
5
6
7
<c:forEach var="varName"
varStatus="varStatusName"
begin="begin"
end="end"
step="step">
<%-- 这里是要处理的主体内容 --%>
</c:forEach>

<c:forTokens>操作

<c:forTokens>操作被设计用来遍历由分隔符分隔的标记字符串。

语法如下:

1
2
3
4
5
6
7
8
9
<c:forTokens items="stringOfTokens"
delims="delimiters"
var="varName"
varStatus="varStatusName"
begin="begin"
end="end"
step="step">
<%-- 要处理的body内容 --%>
</c:forTokens>

在items属性中定义标记字符串。标记字符串中的每个标记应该用delims属性中定义的分隔符分隔。
var属性用于访问每个标记。
其他属性(如begin、end和step)允许您定义标记中您想要开始和结束的位置以及每个迭代的间隔。

<c:forTokens>示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<%@page contentType="text/html"
pageEncoding="UTF-8" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
 
<html>
<head>
<title>c:forTokens循环</title>
</head>
<body>
<c:set var="infoType"
value="theITroad,2017,12,JSP" />
<table border="1">
<tr>
<td>Site</td>
<td>Year</td>
<td>Month</td>
<td>Course</td>
</tr>
<tr>
<c:forTokens items="${infoType}" delims="," var="info">
<td><c:out value="${info}" /></td>
</c:forTokens>
</tr>
</table>
</body>
</html>


原文链接:https://codingdict.com/