PGBox
P
G
Box

html multiboxタグ

htmlタグのメニューへ戻る



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

チェックボックス<input type="checkbox">を出力します。同じ名前で複数のチェックボックスを配置する場合に使用します。


属性必須意味
property対応するフォームのプロパティ名を指定する。実際にはname="xxx"が出力される。
nameネストした<html:form>のフォーム以外のフォームのpropertyと関連付ける場合に、bean名を指定する。
valueパラメータの値を指定する。省略した場合は"on"がパラメータの値となる。
disabledtrueを指定した場合、無効状態となる。disabled="disabled"が出力される。
style同名の属性値が出力される。
styleClassclass="xxx"が出力される。
styleIdid="xxx"が出力される。
errorKeyエラーメッセージを取得するリクエスト/セッションバインド名を指定。
errorStyleこのタグのpropertyに関連するエラーメッセージが存在した場合に出力されるstyle属性の値
errorStyleClassこのタグのpropertyに関連するエラーメッセージが存在した場合に出力されるclass属性の値
errorStyleIdこのタグのpropertyに関連するエラーメッセージが存在した場合に出力されるid属性の値
bundleメッセージリソースを取得するリクエスト/セッションバインド名を指定。
alt同名の属性値が出力される。
altKeyaltの値をメッセージリソースから取得する場合に、そのキーを指定する。
title同名の属性値が出力される。
titleKeytitleの値をメッセージリソースから取得する場合に、そのキーを指定する。
accesskey同名の属性値が出力される。
tabindex同名の属性値が出力される。
onblur同名の属性値が出力される。
onchange同名の属性値が出力される。
onclick同名の属性値が出力される。
ondblclick同名の属性値が出力される。
onfocus同名の属性値が出力される。
onkeydown同名の属性値が出力される。
onkeypress同名の属性値が出力される。
onkeyup同名の属性値が出力される。
onmousedown同名の属性値が出力される。
onmousemove同名の属性値が出力される。
onmouseout同名の属性値が出力される。
onmouseover同名の属性値が出力される。
onmouseup同名の属性値が出力される。


同じ名前で複数のチェックボックスを配置する場合に使用します。

以下のサンプルではアンケートページという設定で、趣味を選択する入力フォームを構成してみます。
また、趣味の選択肢の一覧はアクションで動的に作成してみます。
入力チェックなどは省略します。

このサンプルで使用しているstruts-configの定義は以下の通りです。
<form-beans>
    <form-bean name="SampleForm" type="pgbox.form.SampleForm" />
</form-beans>
(中略)
<!-- 趣味の入力画面へのアクション -->
<action path="/input" name="SampleForm" type="pgbox.action.InputAction" validate="false" scope="request">
    <forward name="success" path="/WEB-INF/view/input.jsp" />
</action>

<!-- 入力された趣味を処理するアクション -->
<action path="/regist" name="SampleForm" type="pgbox.action.RegistAction" validate="false" scope="request">
    <forward name="success" path="/WEB-INF/view/regist.jsp" />
</action>


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> hobbyList;
    
    /** 選択された趣味 */
    private String[] hobby;
        
    ※ 以下、setter, getter
}

Actionは以下のようにします・
InputAction.java
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form0, HttpServletRequest request, HttpServletResponse response) throws Exception {
    SampleForm form = (SampleForm) form0;
    
    // 趣味の選択肢一覧を作成
    List<LabelValueBean> hobbyList = new ArrayList<LabelValueBean>();
    hobbyList.add(new LabelValueBean("旅行", "01"));
    hobbyList.add(new LabelValueBean("テニス", "02"));
    hobbyList.add(new LabelValueBean("釣り", "03"));
    hobbyList.add(new LabelValueBean("映画", "04"));
    hobbyList.add(new LabelValueBean("ドライブ", "05"));
    
    // 選択肢をフォームへセット
    form.setHobbyList(hobbyList);
    
    
    return mapping.findForward("success");
}

RegistAction.java
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form0, HttpServletRequest request, HttpServletResponse response) throws Exception {
    SampleForm form = (SampleForm) form0;
    
    // アンケートの回答の登録処理などを行う。サンプルなのでコンソールに出力するだけ
    for (String hobby : form.getHobby()) {
        System.out.println(hobby);
    }
    
    
    return mapping.findForward("success");
}

LabelValueBeanは、ラベルとその値をペアで保持する事のできるstrutsで用意されているbeanクラスです。
InputAction.javaでは、コンストラクタの第一引数にラベルを指定し、第二引数ではパラメータ値を指定しています。
このサンプルの場合、送信されてくるパラメータ値は"01", "02"といった、趣味のコード値と想定しています。


JSPは以下のように記述します。
input.jsp
<html:form action="/regist">
    
    あなたの趣味を選択してください。<br />
    <br />
    
    <logic:iterate id="hobbyItem" name="SampleForm" property="hobbyList">
        <html:multibox property="hobby" value="${hobbyItem.value}" />
        <bean:write name="hobbyItem" property="label" /><br />
        
    </logic:iterate>
    <br />
    
    <html:submit value="送信" />
    
</html:form>

regist.jsp
<html:form action="/regist">
    
    アンケートのご協力ありがとうございました。
    
</html:form>

※ EL式を使用していますので、JSP2.0以上でない環境の場合は正しく動きません。スクリプトレットなどで置き換えてください。


実行イメージは以下のようになります。
/input.do
説明画像

送信ボタン押下後
説明画像





htmlタグのメニューへ戻る