JSTL リファレンス

<x:forEach>
xmlns:x="http://java.sun.com/jsp/jstl/xml"

SYNOPSIS

<x:forEach
var="変数名"
select*="XPath"
begin="0|数値"
end="数値"
step="1|数値"
varStatus="変数名"
>
ループして評価する内容.
</x:forEach>

説 明

XPath で参照したノードを列挙します。 これは <xsl:for-each> と同じです。

タグ内での XPath コンテキストノードは列挙中のノードに移動します。

属 性

var="変数名"
optional
列挙するノードを格納する変数名です。 変数にどのようなオブジェクトが格納されるかは select で指定した XPath 構文の結果に依存します。
select="XPath"
required

評価する XPath 構文を指定します。

begin="0|数値"
optional
ノードの列挙を何個目から開始するかを指定します。 0 は最初のノードを示します。
end="数値"
optional
ノードの列挙を何個目で終了するかを指定します。
step="1|数値"
optional
列挙のステップです。
varStatus="変数名"
optional

列挙の状態を格納する変数名を指定します。 この変数には javax.servlet.jsp.jstl.core.LoopTagStatusGoogle I'm Feeling Lucky™ のインスタンスが格納されます (この変数には <c:xxx> を使用してアクセスする必要があります)。

内 容

ループして評価する内容。 通常の JSP 書式で記述します。

使用例

Alpha から Zeta までの XML を列挙します。 説明のため JSP 内で XML を定義していますが、一般的には外部ファイルやサーブレットから連携された DOM を使用することになるでしょう。
JSP
<x:parse var="xml">
<?xml version="1.0"?>
<foo>
    <bar>Alpha</bar>
    <bar>Beta</bar>
    <bar>Gamma</bar>
    <bar>Delta</bar>
    <bar>Epsilon</bar>
    <bar>Zeta</bar>
</foo>
</x:parse>

<x:forEach select="$xml/foo/bar" varStatus="status">
    <c:out value="${status.count}" />. <x:out select="." /><br>
</x:forEach>
実行結果は以下の通り。
結果
1. Alpha
2. Beta
3. Gamma
4. Delta
5. Epsilon
6. Zeta
同一の XML に対して列挙するノードに範囲を指定します。
JSP
<x:forEach select="$xml/foo/bar" begin="1" end="4" step="2" varStatus="status">
    <c:out value="${status.count}" />. <x:out select="." /><br>
</x:forEach>
実行結果は以下の通り。 スキップを指定しても varStatus のカウントは連番になります。
結果
1. Gamma
2. Epsilon
CVS 2008/03/09