PGBox
P
G
Box

html optionsタグ

htmlタグのメニューへ戻る



使用した環境
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名とプロパティ名で指定できます。

属性必須意味
collectionoptionタグに使用するラベルと値を保持するコレクション/配列のbean名を指定する。
nameoptionタグに使用する値のコレクション/配列を保持するbean名を指定する。省略した場合はネストした<html:form>のフォームとなる。
property[collectionを指定した場合]を保持するプロパティ名を指定する。[collectionを指定していない場合]nameで指定したbean内の値のコレクション/配列を保持するプロパティ名を指定する。
labelNameoptionタグに使用するラベルのコレクション/配列を保持するbean名を指定する。省略した場合はネストした<html:form>のフォームとなる。
labelProperty[collectionを指定した場合]ラベルを保持するプロパティ名を指定する。[collectionを指定していない場合labelNameで指定したbean内のラベルのコレクション/配列を保持するプロパティ名を指定する。
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>


まずは、ラベルと値の両方を保持する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">
    
    <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には、セレクトで選択された値がセットされます。




次に、ラベルと値を別々のコレクション/配列に保持してる場合のサンプルになります。

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">
    
    <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タグのメニューへ戻る