#author("2021-12-14T01:54:04+00:00","","")
#author("2021-12-14T02:33:57+00:00","","")
#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(おもしろかった[178],そうでもない[96])
#vote(おもしろかった[179],そうでもない[96])
- struts勉強中です。わかりやすくて参考にさせていただきました。 -- [[yamatatsu]] &new{2008-09-24 (水) 22:28:28};
- struts勉強中です。わかりやすくて参考にさせていただきました。 -- [[yamatatsu]] &new{2008-09-24 (水) 22:28:52};
- わかりやすくて参考にさせていただきました -- [[研修中]] &new{2012-01-13 (金) 13:21:27};
- tt -- [[a]] &new{2017-08-18 (金) 13:22:17};

#comment

#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS