リファレンストップへ Java | html optionsタグ使用した環境 JDK 6 Update 11 struts 1.3.10 複数のセレクトの選択肢<option>を出力します。bean名を指定してoption要素のコレクションを指定します。selectタグにネストして使用します。2通りの使用方法があり、collection属性でラベルと値を保持するbeanのコレクション/配列のbean名を指定する方法と、labelNameとnameでラベルと値のbean名を別々に指定する方法があります。 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> まずは、ラベルと値の両方を保持するbeanのコレクション/配列を指定する方法の例になります。 Formが以下のように定義されているとします。 public class SampleForm extends ActionForm { /** 選択された値 */ private String selectValue; ※ 以下、setter, getter } アクションでは以下のように処理します。 import org.apache.struts.util.LabelValueBean; 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")); // リクエストにバインド request.setAttribute("optionItems", optionItems); return mapping.findForward("success"); } } JSPでは以下のように記述します。 <html:form action="/sample"> <html:select property="selectValue"> <html:options collection="optionItems" property="value" labelProperty="label" /> </html:select> <html:submit value="送信" /> </html:form> 出力されるhtmlは以下のようになります。(改行やタブは見やすいように調整してあります。) <form name="SampleForm" method="post" action="/struts-sample/sample.do"> フォームのプロパティselectValueには、セレクトで選択された値がセットされます。<select name="selectValue"> <option value="value1">値1</option> <option value="value2">値2</option> <option value="value3">値3</option> </select> <input type="submit" value="送信"> </form> 次に、ラベルと値を別々のコレクション/配列に保持してる場合のサンプルになります。 Formが以下のように定義されているとします。 public class SampleForm extends ActionForm { /** 選択された値 */ private String selectValue; /** ラベルのリスト */ private List<String> optionLabels; /** 値のリスト */ private List<String> optionValues; ※ 以下、setter, getter } アクションでは以下のように処理します。 import org.apache.struts.util.LabelValueBean; public class SampleAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form0, ... SampleForm form = (SampleForm) form0; // ラベルのリストを作成 List<String> optionLabels = new ArrayList<String>(); optionLabels.add("値1"); optionLabels.add("値2"); optionLabels.add("値3"); // ラベルのリストをフォームにセット form.setOptionLabels(optionLabels); // 値のリストを作成 List<String> optionValues = new ArrayList<String>(); optionValues.add("value1"); optionValues.add("value2"); optionValues.add("value3"); // 値のリストをフォームにセット form.setOptionValues(optionValues); return mapping.findForward("success"); } } JSPでは以下のように記述します。 <html:form action="/sample"> <html:select property="selectValue"> <html:options property="optionValues" labelProperty="optionLabels" /> </html:select> <html:submit value="送信" /> </html:form> 出力されるhtmlは以下のようになります。(改行やタブは見やすいように調整してあります。) <form name="SampleForm" method="post" action="/struts-sample/sample.do"> フォームのプロパティselectValueには、セレクトで選択された値がセットされます。<select name="selectValue"> <option value="value1">値1</option> <option value="value2">値2</option> <option value="value3">値3</option> </select> <input type="submit" value="送信"> </form> |
|