import java.io.UnsupportedEncodingException; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; public class InputForm1 extends ActionForm { 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 InputForm1() { numberInput = ""; 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) { //エラーがある場合はerrsにエラーメッセージを追加する。ない場合は、正常と、strutsが判断を行う。 ActionErrors errs = new ActionErrors(); //入力値のチェック String numberInput = req.getParameter("numberInput"); int num = -1; try { num = Integer.parseInt(numberInput); } catch(NumberFormatException e) { //数値が入力されていないため、エラーメッセージを生成 ActionMessage err = new ActionMessage("check.nonumberinput"); errs.add("numberInput", err); } System.out.println("numberInput : "+num); //チェックボックスがチェックされているかチェック String checkBox = req.getParameter("checkBox"); if( "on".equals(checkBox) ) { //onという文字列ならばチェックボックスはチェックされている。 System.out.println("checkBox : "+checkBox); } else { //チェックされていないため、エラーメッセージを生成 ActionMessage err = new ActionMessage("check.unchecked"); errs.add("checkBox", err); } //リストボックスにて二つ選択されているかチェック String[] multiSelect = req.getParameterValues("multiSelect"); if( multiSelect !=null && multiSelect.length == 2 ) { System.out.println("multiSelect : "+multiSelect[0]+"/"+multiSelect[1]); } else { ActionMessage err = new ActionMessage("check.unselect"); errs.add("multiSelect", err); } //テキストエリアを有効にするチェックボックスにチェックがある場合、テキストエリアに入力があるか確認する。 String textboxEnableCheckBox = req.getParameter("textboxEnableCheckBox"); if( "on".equals(textboxEnableCheckBox) ) { String textArea = req.getParameter("textArea"); if( textArea != null && textArea.length() < 1 ) { ActionMessage err = new ActionMessage("check.notext"); errs.add("textArea", err); } else { System.out.println("textArea : "+textArea); } } return errs; } }