| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

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

案内メニュー