- 追加された行はこの色です。
- 削除された行はこの色です。
#topicpath
----
**Iterateタグの使い方 [#t570d500]
RequestやSession,PageContext,Applicationなど、あるスコープ内に、配列やイテレータなどのインスタンスが存在するとき、iterateタグを利用することによってループ処理を非常に簡潔に記述することができます。
***Collectionが、あるスコープに存在する場合 [#c45374ae]
下のコードは authenticateListというCollectionのインスタンスがrequestにAttributeされている場合のサンプルです。
<logic:iterate id="authenticate" name="authenticateList" scope="request">
<bean:write name="authenticate" property="userId" />
</logic:iterate>
***配列が、あるスコープに存在する場合 [#b27454e1]
下のコードはjavadocsという名前の配列がrequestスコープに存在する場合のサンプルです。
<logic:iterate id="javadoc" name="javadocs" scope="request">
<tr>
<td><bean:write name="javadoc" property="className" /></td>
<td><bean:write name="javadoc" property="url" /></td>
</tr>
</logic:iterate>
<%--
id: loop内のBeanの変数名(loop内のbean:writeなどでname属性として使われる)
name,scope: scopeからgetAttribute(name)
--%>
と記述をすると
+request.getAttribute("javadocs");とやって配列を取得し
+ループ内では配列内の個々のインスタンスはjavadocという変数名となり
+javadoc.getClassName()やらjavadoc.getUrl()などのメソッドが呼ばれ画面に表示
+配列の要素数分繰り返される
といったことが行われます。
***フィールドに配列を保持するインスタンスが、あるスコープに存在する場合 [#ud37bfbb]
下のコードは、getBookmarks()というメソッドで配列を返すインスタンス(bookmarks)が、sessionに存在する場合のサンプルです。
<%--
id: loop内のBeanの変数名(loop内のbean:writeなどでname属性として使われる)
name,scope: scopeからgetAttribute(name)
property: 配列を返すプロパティ名。下例ではget+bookmarks=getBookmarksというメソッドが呼ばれる
--%>
<logic:iterate id="bookmark" name="bookmarks" property="bookmarks" scope="session">
<bean:write name="bookmark" property="name" />
<html:link paramName="bookmark" paramId="name" paramProperty="name"
page="/edit.do?action=edit">編集</html:link>
</logic:iterate>
***イテレータが、あるスコープに存在する場合 [#j44fb426]
Iterator が「pageContext」などにいるとする(名前をeとしよう)。そのとき、
<logic:iterate id="user" name="e">
<bean:write name="user" property="userid" />
</logic:iterate>
とアクセス可能。((property属性とかでフィールドを取得するとかが必要ないからね))((userというインスタンスはgetUserid()というメソッドをもつクラスです。念のため))
----
この記事は
#vote(おもしろかった[138],そうでもない[74])
#vote(おもしろかった[139],そうでもない[74])
- struts勉強中です。わかりやすくて参考にさせていただきました。 -- [[yamatatsu]] &new{2008-09-24 (水) 22:28:28};
- struts勉強中です。わかりやすくて参考にさせていただきました。 -- [[yamatatsu]] &new{2008-09-24 (水) 22:28:52};
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}