Struts2.0.9のiteratorタグ
ループ処理に使えるタグ。シンプルになった気がする。
Listに入ったオブジェクトを表示する
Listの中にUserVOというオブジェクトが入っている場合の表示方法。propertyタグを使ってUserVOのアクセッサを呼び出している。
<table border="1"> <tr> <th>ユーザ名</th> <th>パスワード</th> </tr> <s:iterator value="userList"> <tr> <td><s:property value="userName" /></td> <td><s:property value="password" /></td> </tr> </s:iterator></table>
2重ループ
UserVO.addressListにはListが入っているとする。userListでループして、その中にあるデータをさらにループさせる場合は以下のようになった。「○○のaddressList」みたいな書き方ではないので違和感を感じる。
<s:iterator value="userList"> <tr> <td><s:property value="userName" /></td> <td><s:property value="password" /></td> <td> <s:iterator value="addressList"> <s:property /><br /> </s:iterator> </td> </tr></s:iterator>
ListにStringが入っている場合
propertyタグを使えばString文字列がそのまま表示される。中でtoStringメソッドを読んでいるのかも。
<s:iterator value="userList"> <li><s:property /></li></s:iterator>
行の背景に色を交互につける
一行ごとに行の背景色を変えたい場合は「IteratorStatus」を作成すればいい。以下の例では「#rowstatus.odd == true」の場合に背景色が変わる。どうもoddは奇数行のときにtrueになるみたい。今回はrowstatusにしているけど、この名前は何でもOKぽい。どんな名前をつけても結局IteratorStatusができるのかも。
<s:iterator value="userList" status="rowstatus"> <s:if test="#rowstatus.odd == true"> <div style="background-color:red"><s:property /></div> </s:if> <s:else> <div><s:property /></div> </s:else> </s:iterator>
最後の要素かを判定する
IteratorStatusを使えば、現在のデータが最後のデータかどうかを判定できる。
<s:iterator value="userList"> <s:property value="userName" />, <s:property value="password" />, <s:iterator value="addressList" status="itStatus"> <s:property /> <s:if test="!#itStatus.last">,</s:if> </s:iterator> <br /></s:iterator>
上記記述によって、最後ではない場合にカンマをつけることができた。
//表示例userName0, password0, address = 0 , address = 0 userName1, password1, address = 1 , address = 1 userName2, password2, address = 2 , address = 2 userName3, password3, address = 3 , address = 3 userName4, password4, address = 4 , address = 4
I'm a software engineer who like travel to island in Japanese. Recently I am enjoying agile manager, coach, product owner for my work. The person grows like that.











