リファレンストップへ Java | logic iterateタグ使用した環境 JDK 6 Update 11 struts 1.3.10 bean内の配列や、Listなどコレクションの繰り返しを行います。
例えば、Formが以下のように定義されており import java.util.List; import org.apache.struts.action.ActionForm; import org.apache.struts.util.LabelValueBean; public class SampleForm extends ActionForm { private List<LabelValueBean> labelValueList; ※ 以下、setter, getter } Actionでは以下のように処理したとします。 public ActionForward execute(ActionMapping mapping, ActionForm form0, ... SampleForm form = (SampleForm) form0; List<LabelValueBean> labelValueList = new ArrayList<LabelValueBean>(); labelValueList.add(new LabelValueBean("ラベル1", "value1")); labelValueList.add(new LabelValueBean("ラベル2", "value2")); labelValueList.add(new LabelValueBean("ラベル3", "value3")); labelValueList.add(new LabelValueBean("ラベル4", "value4")); labelValueList.add(new LabelValueBean("ラベル5", "value5")); form.setLabelValueList(labelValueList); return mapping.findForward("success"); } フォームが保持しているリストを繰り返し処理するには、JSPで以下のようにします。 <logic:iterate id="labelValueBean" name="SampleForm" property="labelValueList"> label:<bean:write name="labelValueBean" property="label" /> value:<bean:write name="labelValueBean" property="value" /><br /> </logic:iterate> 結果は以下のようになります。 label:ラベル1 value:value1 label:ラベル2 value:value2 label:ラベル3 value:value3 label:ラベル4 value:value4 label:ラベル5 value:value5 また、以下のようにスクリプトレットやEL式でcollection属性に直接beanを指定する事もできます。 <logic:iterate id="labelValueBean" collection="${SampleForm.labelValueList}"> サンプル:tableの偶数行のみ背景色を変更する以下のサンプルでは、<table>タグを使用して一覧を作成しています。 indexId属性を使用し、現在のループインデックス番号を取得し、EL式で偶数行のみ背景色を変更する処理も行っています。 <table> EL式についての説明はこちらを参照してください。<tr> <th>label</th> <th>value</th> </tr> <logic:iterate id="labelValueBean" name="SampleForm" property="labelValueList" indexId="indexNo"> <tr${indexNo % 2 == 0 ? "" : " style=¥"background-color:#bbbbbb;¥""}> <td><bean:write name="labelValueBean" property="label" /></td> <td><bean:write name="labelValueBean" property="value" /></td> </tr> </logic:iterate> </tr> </table> EL式が使用できない環境の場合は以下のように、スクリプトレットを使用しても同様の処理が行えます。 <table> <tr> <th>label</th> <th>value</th> </tr> <logic:iterate id="labelValueBean" name="SampleForm" property="labelValueList" indexId="indexNo"> <tr <%= indexNo % 2 == 0 ? "" : " style=¥"background-color:#bbbbbb;¥"" %> > <td><bean:write name="labelValueBean" property="label" /></td> <td><bean:write name="labelValueBean" property="value" /></td> </tr> </logic:iterate> </tr> </table> 実行すると、以下のようなhtmlが出力されます。 <table> <tr> <th>label</th> <th>value</th> </tr> <tr> <td>ラベル1</td> <td>value1</td> </tr> <tr style="background-color:#bbbbbb;"> <td>ラベル2</td> <td>value2</td> </tr> <tr> <td>ラベル3</td> <td>value3</td> </tr> <tr style="background-color:#bbbbbb;"> <td>ラベル4</td> <td>value4</td> </tr> <tr> <td>ラベル5</td> <td>value5</td> </tr> </tr> </table> |
|