PGBox
P
G
Box

html optionsCollectionタグ

htmlタグのメニューへ戻る



使用した環境
JDK 6 Update 11
struts 1.3.10

複数のセレクトの選択肢<option>を出力します。bean名とプロパティ名を指定してoption要素のコレクションを指定します。

selectタグにネストして使用します。

optionsタグとoptionsCollectionタグの違いは、optionsタグではlabelとvalueを保持するコレクション/配列のbean名を直接指定しますが、optionsCollectionタグではコレクション/配列をbean名とプロパティ名で指定できます。

属性必須意味
nameラベルと値を保持するコレクション/配列のbean名を指定する。省略した場合はネストした<html:form>のフォームとなる。
propertyラベルと値を保持するコレクション/配列のプロパティ名を指定する。
labelラベルを保持するプロパティ名を指定する。省略した場合は"label"となる。
value値を保持するプロパティ名を指定する。省略した場合は"value"となる。
style同名の属性値が出力される。
styleClassclass="xxx"が出力される。
filtertrueを指定した場合、ラベルと値に対しhtmlエスケープが行われる。デフォルトはtrue。



このサンプルで使用している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">
    
    <html:select property="selectValue">
        <html:optionsCollection property="optionItems" />
    </html:select>
    
    <html:submit value="送信" />
    
</html:form>
※ LabelValueBeanのラベルのプロパティ名はlabel、値のプロパティ名はvalueなので、optionsCollectionのlabel属性とvalue属性は省略しています。


結果として、以下のような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には、セレクトで選択された値がセットされます。





htmlタグのメニューへ戻る