<c:forTokens>
は文字列を区切り文字で分割して、繰返し処理を行うJSP標準タグライブラリ(JSTL)である。
<c:forTokens items="" delims="">
<!-- 繰り返し処理 -->
</c:forTokens>
<c:forTokens>
タグには次の属性を指定することができる。
繰返し処理を始める最初のインデックス(0始まり)
<c:forTokens items="a,b,c" delims="," begin="1">
<!-- 繰り返し処理 -->
</c:forTokens>
文字列を分割する区切りとなる文字を指定する。必須属性であり、省略できない。
<c:forTokens items="a,b,c" delims=",">
<!-- 繰り返し処理 -->
</c:forTokens>
繰返し処理を終える最後のインデックス
<c:forTokens items="a,b,c" delims="," end="1">
<!-- 繰り返し処理 -->
</c:forTokens>
分割する文字列を指定する。必須属性であり、省略できない。
繰返し処理ごとに進めるインデックス
<c:forTokens items="a,b,c,d" delims="," step="2">
<!-- 繰り返し処理 -->
</c:forTokens>
区切り文字で分割された文字列を格納する変数
<c:forTokens items="a,b,c" delims="," var="v">
<c:out value="${v}" />
</c:forTokens>
繰返し処理の状態が格納される変数を指定する。変数に格納される状態は、次のプロパティを持つ。
プロパティ | 説明 |
---|---|
begin | begin属性の値 |
count | 現在のインデックス(1始まり) |
current | 現在のオブジェクト |
end | end属性の値 |
first | ループの最初の場合はtrue、その他はfalse |
index | 現在のインデックス(0始まり) |
last | ループの最後の場合はtrue、その他はfalse |
step | step属性の値 |
varStatusの値は次のように変化する。
<c:forTokens items="a,b,c,d,e" delims="," varStatus="s" step="2" end="4">
<c:set var="begin" value="${s.begin}" />
<c:set var="step" value="${s.step}" />
<c:set var="end" value="${s.end}" />
<c:set var="index" value="${s.index}" />
<c:set var="count" value="${s.count}" />
<c:set var="first" value="${s.first}" />
<c:set var="last" value="${s.last}" />
</c:forTokens>
begin | step | end | index | count | first | last |
---|---|---|---|---|---|---|
0 | 2 | 4 | 0 | 1 | true | false |
0 | 2 | 4 | 2 | 3 | false | false |
0 | 2 | 4 | 4 | 5 | false | true |
<c:forTokens>
タグの使用例を次に示す。
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<title>JSTL example</titile>
</head>
<body>
<c:set var="i" value="foo,bar,baz" />
<c:forTokens items="${i}" delims="," var="v" varStatus="s">
<c:out value="${s.index}" />
<br>
<c:out value="${v}" />
<br>
</c:forTokens>
</body>
</html>
上記のJSPを実行すると、次に示すHTMLが生成される。
<!DOCTYPE html>
<html>
<head>
<title>JSTL example</titile>
</head>
<body>
0<br>foo<br>
1<br>bar<br>
2<br>baz<br>
</body>
</html>
JSP標準タグライブラリ(JSTL)には、他にも次のタグがある。