#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(おもしろかった[89],そうでもない[32]) #comment #topicpath SIZE(10){現在のアクセス:&counter;}