Теги <c:forEach>, <c:forTokens>
Стандартная библиотека тегов JSP
Эти теги инкапсулируют циклы for, while и do-while в Java.
Для сравнения, тег <c:forEach> является более универсальным тегом, поскольку он перебирает объекты в коллекции.
Тег <c:forTokens> разбивает строку на массив с помощью указанного разделителя, а затем перебирает их.
Формат синтаксиса forEach
<c:forEach
items="<object>"
begin="<int>"
end="<int>"
step="<int>"
var="<string>"
varStatus="<string>">
...
Формат синтаксиса forTokens
<c:forTokens
items="<string>"
delims="<string>"
begin="<int>"
end="<int>"
step="<int>"
var="<string>"
varStatus="<string>">
Атрибуты
Тег <c:forEach> имеет следующие атрибуты:
| Attribute | Описание | Обязательно? | Значение по умолчанию |
|---|---|---|---|
| items | Элементы для итерации | нет | Отсутствует |
| begin | Начальный элемент (0=первый элемент, 1=второй элемент) | нет | 0 |
| end | Последний элемент (0=первый элемент, 1=второй элемент) | нет | Последний элемент |
| шаг | Размер шага для каждой итерации | нет | 1 |
| var | Имя переменной, представляющей текущий элемент | нет | Отсутствует |
| varStatus | Имя переменной, представляющей состояние цикла | нет | Отсутствует |
Тег <c:forTokens> имеет атрибуты, аналогичные тегу <c:forEach>, но у <c:forTokens> есть ещё один атрибут:
| Attribute | Описание | Обязательно? | Значение по умолчанию |
|---|---|---|---|
| delims | Разделитель | Да | Отсутствует |
Пример <c:forEach>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>c:forEach 标签实例</title>
</head>
<body>
<c:forEach var="i" begin="1" end="5">
Item <c:out value="${i}"/><p>
</c:forEach>
</body>
</html>
Вывод следующий:
Item 1 Item 2 Item 3 Item 4 Item 5
Пример <c:forTokens>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>c:forTokens 标签实例</title>
</head>
<body>
<c:forTokens items="google,example,taobao" delims="," var="name">
<c:out value="${name}"/><p>
</c:forTokens>
</body>
</html>
Вывод следующий:
google example taobao
Другие расширения