===例===
=====value statck 上のカレントオブジェクトのgetDays()メソッドの値を参照し、繰り返し利用する例。<<s:property/>>タグがイテレータの現在値を出力する。===== <<s:iterator value="days">> <<p>>day is: <<s:property/><></p>> <</s:iterator>>
=====Beanタグを利用し、ActionContextに格納する例。iteratorタグは、ActionContextからオブジェクトを参照し、getDays()メソッドを呼び出す。status属性も、IteratorStatusオブジェクトを生成するのに使用され、例では、odd()メソッドが、行の色を変更するのに利用されている。=====
<<s:bean name="org.apache.struts2.example.IteratorExample" id="it">> <<s:param name="day" value="'foo'"/>> <<s:param name="day" value="'bar'"/>> <</s:bean>> <<p/>> <<table border="0" cellspacing="0" cellpadding="1">> <<tr>> <<th>>Days of the week<</th>> <</tr>> <<p/>> <<s:iterator value="#it.days" status="rowstatus">> <<tr>> <<s:if test="#rowstatus.odd == true">> <<td style="background: grey"><><s:property/><></td>> <</s:if>> <<s:else>> <<td><><s:property/><></td>> <</s:else>> <</tr>> <</s:iterator>> <</table>>
=====次の例は、かなりstatus属性を実例的に説明している。DAO をactionクラスから(Object-Graph Navigation Language 式言語の一種。JSPやJSFのELと比較して非常に強力な記述能力を持つ) 経由で使用する場合、グループおよび所属するユーザを繰り返し処理する。last()メソッドは、カレントオブジェクトが最後の要素であることを示し、最終要素でない場合、ユーザをカンマで区切る。=====
<<s:iterator value="groupDao.groups" status="groupStatus">> <<tr class="<<s:if test="#groupStatus.odd == true ">>odd<</s:if><><s:else>>even<</s:else>>">> <<td><><s:property value="name" /><></td>> <<td><><s:property value="description" /><></td>> <<td>> <<s:iterator value="users" status="userStatus">> <<s:property value="fullName" /><><s:if test="!#userStatus.last">>,<</s:if>> <</s:iterator>> <</td>> <</tr>> <</s:iterator>>
=====actionのコレクションを繰り返し処理し、イテレータの値を他のactionに渡す。ここでは、'[0]'というトリックが使われている。これは、=====
カレントのイテレータの値を取得し、edit actinに引き渡す。'[0]'を利用すると、>>s:property />>と同様の効果が得られる。 <<s:action name="entries" id="entries"/>> <<s:iterator value="#entries.entries" >> <<s:property value="name" />> <<s:property />> <<s:push value="...">> <<s:action name="edit" id="edit" >> <<s:param name="entry" value="[0]" />> <</s:action>> <</push>> <</s:iterator>>
=====単純なループをiteratorタグでシミュレートするには、以下のようにします。=====
<<s:iterator status="stat" value="{1,2,3,4,5}" >> <<!-- grab the index (start with 0 ... ) -->> <<s:property value="#stat.index" />>
<<!-- grab the top of the stack which should be the -->> <<!-- current iteration value (0, 1, ... 5) -->> <<s:property value="top" />> <</s:iterator>>
----
{{include_html banner_html, "!Struts"}}