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で指定した変数として取得できる。