「Struts2 iterator」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「==Struts2 iterator タグ== Iterator は、java.util.Collection、 java.util.Iterator を実装した値の繰り返し処理を行う。 {|class="wikitable" !タ…」) |
|||
| 35行目: | 35行目: | ||
===例=== | ===例=== | ||
| − | =====value statck 上のカレントオブジェクトのgetDays()メソッドの値を参照し、繰り返し利用する例。 | + | =====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()メソッドが、行の色を変更するのに利用されている。===== | =====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()メソッドは、カレントオブジェクトが最後の要素であることを示し、最終要素でない場合、ユーザをカンマで区切る。===== | =====次の例は、かなり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]'というトリックが使われている。これは、===== | =====actionのコレクションを繰り返し処理し、イテレータの値を他のactionに渡す。ここでは、'[0]'というトリックが使われている。これは、===== | ||
| − | カレントのイテレータの値を取得し、edit actinに引き渡す。'[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タグでシミュレートするには、以下のようにします。===== | =====単純なループを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"}} | {{include_html banner_html, "!Struts"}} | ||
2020年2月15日 (土) 08:06時点における版
目次
- 1 Struts2 iterator タグ
- 1.1 例
- 1.1.1 value statck 上のカレントオブジェクトのgetDays()メソッドの値を参照し、繰り返し利用する例。<s:property/>タグがイテレータの現在値を出力する。
- 1.1.2 Beanタグを利用し、ActionContextに格納する例。iteratorタグは、ActionContextからオブジェクトを参照し、getDays()メソッドを呼び出す。status属性も、IteratorStatusオブジェクトを生成するのに使用され、例では、odd()メソッドが、行の色を変更するのに利用されている。
- 1.1.3 次の例は、かなりstatus属性を実例的に説明している。DAO をactionクラスから(Object-Graph Navigation Language 式言語の一種。JSPやJSFのELと比較して非常に強力な記述能力を持つ) 経由で使用する場合、グループおよび所属するユーザを繰り返し処理する。last()メソッドは、カレントオブジェクトが最後の要素であることを示し、最終要素でない場合、ユーザをカンマで区切る。
- 1.1.4 actionのコレクションを繰り返し処理し、イテレータの値を他のactionに渡す。ここでは、'[0]'というトリックが使われている。これは、
- 1.1.5 単純なループをiteratorタグでシミュレートするには、以下のようにします。
- 1.1 例
Struts2 iterator タグ
Iterator は、java.util.Collection、 java.util.Iterator を実装した値の繰り返し処理を行う。
| タグ名 | 必須 | デフォルト | 評価 | 型 | 内容 |
|---|---|---|---|---|---|
| id | false | true | String | 要素参照用ID. UIや、FORMタグ用。HTMLのid属性として利用される。 | |
| status | false | false | true | Boolean | 指定された場合、IteratorStatusのインスタンスは、スタックの上に積まれる。 |
| value | false | true | String | 繰り返し可能なソース、その他、新たに生成されたリストに自身が登録されたオブジェクト。 |
例
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>
<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>
© 2006 矢木浩人