JSP/Servlet | JSTL(JSP Standard Tag Library) | 繰り返し <c:forEach>, <c:forTokens>

繰り返しは、同じ作業を特定の回数だけ繰り返すときに使用する。JSTLでは最もよく使われる<c:forEach>について見てみよう。

ディレクティブ宣言

繰り返しを使用するには、JSPページの上部にJSTL core宣言が必要である。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:forEach>リストを使った繰り返し

<c:forEach>はリストを受け取り、リストの件数分だけ繰り返すループである。

属性の説明

項目 説明 必須 デフォルト
var 使用する変数名 必須 なし
items Collectionオブジェクト、ListやMapなど 必須
begin 繰り返し開始index。定義されない場合は0 0
end 繰り返し終了index 最後のindex
step 繰り返すたびにスキップするindex数
varStatus 繰り返し状態を確認できる変数

varStatus値の説明

戻り値 説明
index int itemsに定義した項目を指すindex番号。0から始まる。
count int 現在何回目の繰り返しかを示す。1から始まる。
first boolean 現在の繰り返しが最初かどうか
last boolean 現在の繰り返しが最後かどうか

使用例

すべての属性を使用した例

<c:forEach var="item" items="${items}" begin="0" end="10" step="1" varStatus="status">
    <p>番号: ${status.index}</p>
    <p>書名: ${item.name}</p>
    <p>著者: ${item.author}</p>
    <p>出版社: ${item.publisher}</p>
</c:forEach>

この例は${items}を0から10まで繰り返しながら一覧を表示する。

一般的な使用例

<c:forEach var="item" items="${items}">
    <p>番号: ${status.index}</p>
    <p>書名: ${item.name}</p>
    <p>著者: ${item.author}</p>
    <p>出版社: ${item.publisher}</p>
</c:forEach>

<c:forTokens>トークンを使った繰り返し

文字列を特定の記号で分割して繰り返すループである。JavaのStringTokenizerに似た動作をする。

属性の説明

項目 説明 必須 デフォルト
delims 文字列を分離するための特定記号 必須

使用例

<ol>
<c:forTokens var="item" items="りんご,ぶどう,バナナ,すいか,いちご" delims=",">
    <li>果物: ${item}</li>
</c:forTokens>
</ol>

itemsに文字列を入れ、delimsには分割する記号を入れる。各トークンに分離された文字列は、varで指定した変数として取得できる。