[JSTL]<br>ラベルの使用
JSPの開発では反復はよく使われる操作である.たとえば、クエリーの結果などを行単位で表示します.以前のJSPでは、通常Scriptletsを使用して、IteratorまたはEnumerationオブジェクトの反復出力を実現していました.JSTLの反復ラベルを使用すると、反復操作を大幅に簡略化できます.
JSTLでサポートされている反復ラベルは、との2つです.ここで紹介するのはタグです.
簡単に言えば、ラベルの役割は、ラベル内部の内容を反復出力することです.一定回数の反復出力を行うか、セット内のオブジェクトの個数に基づいて反復の回数を決定することができます.
ラベルの構文定義を以下に示します.
ラベルには、次のプロパティがあります.
l var:反復パラメータの名前.反復体で使用できる変数の名前.各反復変数を表すために使用されます.タイプはStringです.
l items:反復するコレクション.サポートされているタイプについては、以下で説明します.
l varStatus:反復変数の名前で、反復の状態を表し、反復自体の情報にアクセスできます.
l begin:itemsが指定されている場合、反復はitems[begin]から反復されます.itemsが指定されていない場合はbeginから反復します.そのタイプは整数です.
l end:itemsを指定した場合、items[end]で反復を終了します.itemsが指定されていない場合はendで反復を終了します.そのタイプも整数です.
l Step:反復のステップ長.
ラベルのitemsプロパティは、Javaプラットフォームが提供するすべての標準セットタイプをサポートします.さらに、この操作を使用して、基本タイプ配列を含む配列の要素を反復できます.サポートされる集合タイプと反復要素は、次のようになります.
l JAva.util.Collection:iterator()を呼び出して取得する要素.
l JAva.util.Map:java.util.Map.Entryで得られたインスタンス.
l JAva.util.Iterator:反復要素.
l JAva.util.Enumeration:要素を列挙します.
l Objectインスタンス配列:配列要素.
l 基本タイプ値配列:パッケージされた配列要素.
l コンマで区切られたString:分割されたサブ文字列.
l JAvax.servlet.jsp.jstl.sql.Result:SQLクエリで取得したロー.
のvarStatusプロパティは、整数に対してもコレクションに対しても反復に対しても同じ役割を果たします.varプロパティと同様に、varStatusは、役割ドメインを定義する変数を作成するために使用されます(変更量は現在のラベル内でのみ機能します).ただし、varStatusプロパティによって命名された変数は、現在のインデックス値または現在の要素を格納するのではなく、javax.servlet.jsp.jstl.core.LoopTagStatusクラスのインスタンスを付与します.このクラスには、反復の現在の状態を記述する一連の特性が含まれています.これらの属性の意味は以下の通りです.
l current:現在反復されている(集合内の)項目.
l index:現在の反復は0から始まる反復インデックスです.
l count:現在の反復は1から始まる反復数です.
l first:現在の反復がbooleanタイプの最初の反復であるかどうかを示すために使用されます.
l Last:現在の反復がbooleanタイプの最後の反復であるかどうかを示すために使用されます.
l begin:beginプロパティの値.
l end:endプロパティの値
l Step:step属性の値
次に、2つの基本的な例を見てみましょう.1つ目の例は、集合内の要素を順次出力することです.
次の例は、1〜9の平方を出力するための固定回数の反復である.
JSTLでサポートされている反復ラベルは、
簡単に言えば、
<c:forEach var="name" items="expression" varStatus="name"
begin="expression" end="expression" step="expression">
body content
</c:forEach>
l var:反復パラメータの名前.反復体で使用できる変数の名前.各反復変数を表すために使用されます.タイプはStringです.
l items:反復するコレクション.サポートされているタイプについては、以下で説明します.
l varStatus:反復変数の名前で、反復の状態を表し、反復自体の情報にアクセスできます.
l begin:itemsが指定されている場合、反復はitems[begin]から反復されます.itemsが指定されていない場合はbeginから反復します.そのタイプは整数です.
l end:itemsを指定した場合、items[end]で反復を終了します.itemsが指定されていない場合はendで反復を終了します.そのタイプも整数です.
l Step:反復のステップ長.
l JAva.util.Collection:iterator()を呼び出して取得する要素.
l JAva.util.Map:java.util.Map.Entryで得られたインスタンス.
l JAva.util.Iterator:反復要素.
l JAva.util.Enumeration:要素を列挙します.
l Objectインスタンス配列:配列要素.
l 基本タイプ値配列:パッケージされた配列要素.
l コンマで区切られたString:分割されたサブ文字列.
l JAvax.servlet.jsp.jstl.sql.Result:SQLクエリで取得したロー.
l current:現在反復されている(集合内の)項目.
l index:現在の反復は0から始まる反復インデックスです.
l count:現在の反復は1から始まる反復数です.
l first:現在の反復がbooleanタイプの最初の反復であるかどうかを示すために使用されます.
l Last:現在の反復がbooleanタイプの最後の反復であるかどうかを示すために使用されます.
l begin:beginプロパティの値.
l end:endプロパティの値
l Step:step属性の値
次に、2つの基本的な例を見てみましょう.1つ目の例は、集合内の要素を順次出力することです.
<c:forEach var="item" items="${contents}" varStatus="status">
$status.count:${item}
</c:forEach>
次の例は、1〜9の平方を出力するための固定回数の反復である.
<c:forEach var="x" begin="1" end="9" step="1">
${x*x}
</c:forEach>