在JSP中最常见的任务之一是使用Java for和while循环输出一组数据。
for
while
通常这样子会导致创建了一个非常不容易阅读的包含大括号的JSP页面同时,如果发生了错误,找到问题的代码很难。
幸运的是,JSTL为循环和迭代提供了两个有用的操作:
<c:forEach>
<c:forEach>操作非常有用。可以在集合上循环,也可以重复多次。
<c:forEach(var =
"var"
items=
"collection"
varStatus=
"varStatusName"
>
<%-- processing of each item here --%>
</c:forEach>
在集合上使用forEach示例
<%
@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 =
Person(
"theITroad"
);
Person p2 =
"JSP"
list.add(p1);
list.add(p2);
request.setAttribute(
"list"
, list);
<c:forEach var=
"person"
"${requestScope.list}"
<c:out value=
"${person.name}"
/>
</body>
</html>
语法如下:
"varName"
begin=
"begin"
end=
"end"
step=
"step"
<%-- 这里是要处理的主体内容 --%>
<c:forTokens>
<c:forTokens>操作被设计用来遍历由分隔符分隔的标记字符串。
<c:forTokens items=
"stringOfTokens"
delims=
"delimiters"
var=
<%-- 要处理的body内容 --%>
</c:forTokens>
在items属性中定义标记字符串。标记字符串中的每个标记应该用delims属性中定义的分隔符分隔。var属性用于访问每个标记。其他属性(如begin、end和step)允许您定义标记中您想要开始和结束的位置以及每个迭代的间隔。
<title>c:forTokens循环</title>
<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>
"${infoType}"
","
"info"
<td><c:out value=
"${info}"
/></td>
</table>
原文链接:https://codingdict.com/