同じ処理を何回もさせることができます。forEach属性にオブジェクト集(コレクション)を指定することで、ディベロッパーは関連している要素の処理回数を決めます。便宜上、要素がforEach属性に指定される場合、その要素を繰り返し要素と呼びます。
以下の例でリスト項目は三回作成されます。下の例では各々の項目のラベルにBestが指定されて、次にBetterが指定され、最後にGoodが指定されます。
<listbox> <listitem label="${each}" forEach="Best, Better, God"/> </listbox>
オブジェクトのコレクションを持つ変数がある場合、それを直接 forEach 属性に指定することができます。例えば、次のように grades というコレクション変数が有るとします。
grades = new String[] {"Best", "Better", "Good"};
そこで次のように、 forEach 属性を使って繰り返すことができます。コレクションを指定するのに、EL表記を使わなければならないことに注目してください。
<listbox> <listitem label="${each}" forEach="${grades}"/>
</listitem>
繰り返す方式はforEach属性の指定された値のタイプによって違います。
値がjava.util.Collection場合、コレクションのそれぞれの要素に処理が繰り返されます。
値がJava.util.Map場合、それぞれマップのMap.Entryに処理が繰り返されます。
値がJava.util.Iterator場合、iteratorにある要素に処理が繰り返されます。
値が、java.utilEnumeration場合、一覧表のそれぞれの要素に処理が繰り返されます。
Object[]、Int[]、short[]、byte[]、char[]、char[]、float[]、double[]が指定される場合、配列のそれぞれの要素に繰り返されます。
nullの場合、何も生成されません(無視されます)。
<listbox> <listitem label="${each}" forEach="grades"/> </listbox>