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 InputForm2 extends ValidatorForm {
/*
* (1)の場合ActionFormを継承し、validateメソッドをオーバーライドしましたが、
* (2)では、strutsに入力値のチェックを任せるため、設定のみを、validation.xmlに記述します。
* Struts validatorを使用し入力チェックを行いますが、StrutsValidatorも万能ではないので、
* チェックができない部分については、validateメソッドをオーバーライドし、チェックを行います。
*
* このとき、validateメソッド内で、上位クラスのvalidateメソッドを必ず呼び出します。
* そうしなければ、validation.xmlで定義したチェックルールが実行されません。
*/
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 InputForm2() {
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;
}
}