リファレンストップへ Java | html multiboxタグ使用した環境 JDK 6 Update 11 struts 1.3.10 チェックボックス<input type="checkbox">を出力します。同じ名前で複数のチェックボックスを配置する場合に使用します。
同じ名前で複数のチェックボックスを配置する場合に使用します。 以下のサンプルではアンケートページという設定で、趣味を選択する入力フォームを構成してみます。 また、趣味の選択肢の一覧はアクションで動的に作成してみます。 入力チェックなどは省略します。 このサンプルで使用している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 送信ボタン押下後 |
|