x:repeat アクションは、JavaBeans™ の反復プロパティーを繰り返し反復させる、 さらに具体的には結果セットの中の行と桁を繰り返し反復させるために使用されるものです。 x:repeat の本体内部の全アクションと HTML が反復のたびに 1 回処理されます。
DBSelect または DBProcedureCall Bean を指定し、その反復プロパティーを指定して繰り返し反復を行うか、索引変数に開始値と終了値を指定することによって、 あるいはこの両方を行うことによって反復回数を制御することができます。
索引変数は暗黙とすることができ、あるいはこれに名前を指定して、スクリプトレットの中、 あるいは x:repeat の本体内のその他の JSP SQL アクションの中で明示して使用することができます。 索引変数は暗黙であろうと明示であろうと、x:repeat の本体内の JSP SQL アクションの中の行、桁、 またはパラメーターを識別する特定属性のデフォルト値として使用されます。 詳細については、下図を参照してください。
開始値と終了値および明示索引変数を指定する場合は、Select または ProcedureCall ではなく、オブジェクトを繰り返し反復させるために索引変数を使用することができます。
x:repeat アクションはネストできます。 たとえば、外側の x:repeat を使用して結果セットの行を、内側の x:repeat を使用してそれぞれの行の中の桁を繰り返し反復させることができます。
<x:repeat name = "target bean name" over = "rows|columns|nothing" index = "name" start = "starting_index" end = "ending_index > </x:repeat>
x:repeat アクションには以下の属性があります。
名前の付けられた Bean 以外の Bean をターゲットとしているアクションを x:repeat の本体に入れることができます。 このようにする必要があるのは、同じ値を使用して行、桁、 またはその他の Bean の他の反復プロパティーに索引付けができる場合だけです。 x:getColumn または x:updateRow のようなアクションの場合は、 アクション上の他の Bean の名前をデフォルトにしないで提供することが必要となります。
この x:repeat の索引変数の値は、反復プロパティーの最初のオカレンスから最後のオカレンスまでの範囲にわたります。 x:repeat の本体内の JSP SQL タグの以下の属性では、索引変数もデフォルト値となります。
over の値 | JSP SQL タグ | 属性 | 索引範囲 |
---|---|---|---|
rows | <x:updateRow>
<x:deleteRow> <x:insertRow> <x:getColumn> <x:setColumn> |
row | 1 から行の番号まで (包含) |
columns | <x:getColumn> <x:setColumn> |
index | 1 から桁の番号まで (包含) |
アクションにその独自の名前属性がなく、親 x:repeat から名前属性を継承していない場合は、 索引変数が x:repeat の本体内の名前属性のデフォルトとして使用されています。 この場合は、x:repeat タグ上に終了属性を明示して指定することによって索引の終了値を定める必要があります。
over (繰り返し) の値が rows であり、名前属性が DBProcedureCall Bean を識別している場合は、DBProcedureCall Bean の現在の結果セットの行が繰り返し反復されます。 この場合は、x:repeat の本体内の他の結果セットに移動しないようにしてください。 移動すると、索引変数の範囲が動的に変更されることがあります。
この名前と一緒に作成される変数の型は Integer (整数) となります。 この変数をスクリプトレットの中で使用する場合は、Integer が使用されるコンテキストの中で有効であることを確認してください。 たとえば、DBSelect Bean の setCurrentRow() メソッドには Integer ではなく、int 変数が必要です。 ただし、この変数を x:getColumn のような、他の JSP SQL アクションの中で使用する時には、 データ型について気にする必要はありません。
終了属性には「包含」制限値を指定します。これは、この値が反復の最後の値であることを意味します。 (終了属性の値が開始属性の値よりも小さい場合は、反復は行われません。) 有効な値は、整数の 0 以上です。