import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.validator.ValidatorForm; public class InputForm3 extends ValidatorForm { /* * (1)の場合ActionFormを継承し、validateメソッドをオーバーライドしましたが、 * (2)では、strutsに入力値のチェックを任せるため、設定のみを、validation.xmlに記述します。 * フォームBeanにて行うことは、フォームBeanを記述する際、ValidatorFormを継承すること・・・ぐらいです。 */ String numberInput; boolean checkBox; String[] multiSelect; boolean textboxEnableCheckBox; String textArea; public String getNumberInput() { return numberInput; } public void setNumberInput(String numberInput) { this.numberInput = numberInput; } public boolean isCheckBox() { return checkBox; } public void setCheckBox(boolean checkBox) { this.checkBox = checkBox; } public String[] getMultiSelect() { return multiSelect; } public void setMultiSelect(String[] multiSelect) { this.multiSelect = multiSelect; } public boolean isTextboxEnableCheckBox() { return textboxEnableCheckBox; } public void setTextboxEnableCheckBox(boolean textboxEnableCheckBox) { this.textboxEnableCheckBox = textboxEnableCheckBox; } public String getTextArea() { return textArea; } public void setTextArea(String textArea) { this.textArea = textArea; } /** 画面表示専用の文字列を返す(改行を
に置換してから返す) */ public String getTextArea2() { return textArea.replace("\n", "
"); } public InputForm3() { numberInput = null; checkBox = false; multiSelect = new String[0]; textboxEnableCheckBox = false; textArea = ""; } /** フォームの初期化を行います */ public void reset(ActionMapping mapping, HttpServletRequest req) { numberInput = ""; checkBox = false; multiSelect = new String[0]; textboxEnableCheckBox = false; textArea = ""; } /** * 送信されてきたデータは、このメソッドが使用され、チェックされます。 * (ActionForm内に定義されているチェック用メソッド(validate)をオーバーライドする) */ public ActionErrors validate(ActionMapping map, HttpServletRequest req) { /* * validation.xmlで設定した検証ルールを実行させるためには、かならず、親クラスのvalidate * を呼んでやらねばなりません。 * 呼ばない場合、validation.xmlで設定した検証ルールが未適用になります。 */ ActionErrors errs = super.validate(map, req); //必ず2個選択することが条件なので、二個選択されているか確認する。 if( multiSelect.length != 2 ) { errs.add("multiSelect", new ActionMessage("typecheck.multiSelect.selectcounterror")); } return errs; } }