リファレンストップへ Java | html optionsCollectionタグ使用した環境 JDK 6 Update 11 struts 1.3.10 複数のセレクトの選択肢<option>を出力します。bean名とプロパティ名を指定してoption要素のコレクションを指定します。selectタグにネストして使用します。optionsタグとoptionsCollectionタグの違いは、optionsタグではlabelとvalueを保持するコレクション/配列のbean名を直接指定しますが、optionsCollectionタグではコレクション/配列をbean名とプロパティ名で指定できます。
このサンプルで使用しているstruts-configの定義は以下の通りです。 <form-beans> <form-bean name="SampleForm" type="pgbox.form.SampleForm" /> </form-beans> (中略) <action path="/sample" name="SampleForm" type="pgbox.action.SampleAction" validate="false" scope="request"> <forward name="success" path="/WEB-INF/view/sample.jsp" /> </action> 例えば、Formが以下のように定義されており import org.apache.struts.util.LabelValueBean; public class SampleForm extends ActionForm { /** 選択された値 */ private String selectValue; /** セレクトの選択肢 */ private List<LabelValueBean> optionItems; ※ 以下、setter, getter } アクションでは以下のように処理します。 public class SampleAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form0, ... SampleForm form = (SampleForm) form0; // 選択肢のリストを作成 List<LabelValueBean> optionItems = new ArrayList<LabelValueBean>(); optionItems.add(new LabelValueBean("値1", "value1")); optionItems.add(new LabelValueBean("値2", "value2")); optionItems.add(new LabelValueBean("値3", "value3")); // フォームにセット form.setOptionItems(optionItems); return mapping.findForward("success"); } } 以下のように、JSPで記述を行った場合 <html:form action="/sample"> ※ LabelValueBeanのラベルのプロパティ名はlabel、値のプロパティ名はvalueなので、optionsCollectionのlabel属性とvalue属性は省略しています。<html:select property="selectValue"> <html:optionsCollection property="optionItems" /> </html:select> <html:submit value="送信" /> </html:form> 結果として、以下のようなhtmlが出力されます。(改行やタブは見やすいように調整してあります。) <form name="SampleForm" method="post" action="/struts-sample/sample.do"> <select name="selectValue"> <option value="value1">値1</option> <option value="value2">値2</option> <option value="value3">値3</option> </select> <input type="submit" value="送信"> </form> フォームのプロパティselectValueには、セレクトで選択された値がセットされます。 |
|