【JSP】forEachタグの使い方|拡張for文
JSPでforEachタグを使う方法を紹介します。
このタグはfor文のような使い方、拡張for文のような使い方両方があります。また、特別な場合としてカンマ区切り文字列の各区切りで繰り返し処理を実行することが可能です。
begin属性とend属性
ソース
<c:forEach begin="1" end="3">
Hello.
</c:forEach>
結果
Hello. Hello. Hello.
brタグを出力していないので、「Hello.」が続けて表示されます。上記ではbeginが1、endが3なので3回表示されます。
step属性
step属性は、繰り返しカウンタの値をstep属性に設定することができます。以下のように使います。
ソース
<c:forEach begin="1" end="8" step="2">
Hello.
</c:forEach>
結果
Hello. Hello. Hello. Hello.
上記ではbeginが1でstepが2なので、繰り返しカウンタが1, 3, 5, 7で「Hello.」が出力されます。なので4回分出力されています。
拡張for文のような使い方
通常のfor文に似た使い方を試してみましたが、拡張for文のような使い方もできます。その場合、var属性とitems属性を使います。以下ではリクエストスコープのListの要素を順番に出力しています。
ソース
<%
List<String> list = new ArrayList<>();
list.add("Hello 1.");
list.add("Hello 2.");
request.setAttribute("list", list);
%>
<c:forEach var="item" items="${list}">
<c:out value="${item}" />
</c:forEach>
結果
Hello 1. Hello 2.
items属性に集合を指定し、var属性に集合の要素を表す変数を指定します。この属性の組み合わせが拡張for文に似ているところです。var属性に指定した変数の内容は、outタグを使ってを出力することができます。
以下のようにitems属性に配列を指定することも可能です。
<%
String[] strs = {"a", "b"};
request.setAttribute("strs", strs);
%>
<c:forEach var="item" items="${strs}">
<c:out value="${item}" />
</c:forEach>
結果
a b
forEachタグの使用例を紹介してきました。JSP初心者は抑えておきたい内容なので知っていて損はないと思います。少しでも参考になれば幸いです。