Strutsリファレンス(逆引き)

Strutsリファレンス
 
Web struts.wasureppoi.com
独自のvalidatorを実装する
スポンサード リンク

独自にvalidatorを実装するには、以下インターフェースのメソッドで実装します。
クラス名やメソッド名に特に制約はありません。

 validator実装形式
   public static boolean メソッド名( java.lang.Object bean,
                          org.apache.commons.validator.ValidatorAction va,
                          org.apache.commons.validator.Field filed,
                          org.apache.struts.action.ActionMessages errors,
                          org.apache.commons.validator.Validator v,
                          javax.servlet.http.HttpServletRequest request)

validator実装例
入力文字列に含まれる文字が、全角文字”ABCDE”のいずれかの場合OK、それ以外の文字が含まれたらNG

package sample.validator;

import javax.servlet.http.HttpServletRequest;
import org.apache.commons.validator.Field;
import org.apache.commons.validator.ValidatorAction;
import org.apache.commons.validator.util.ValidatorUtils;
import org.apache.struts.action.ActionMessages;
import org.apache.commons.validator.Validator;
import org.apache.commons.validator.Validator;

public class CustomValidator {

  public static boolean validateZenkakuAbcde( Object bean,
                               ValidatorAction va,
                               Field field,
                               ActionMessages errors,
                               Validator v,
                               HttpServletRequest request) {

    // 入力文字をActionFormから取得する
    String value = ValidatorUtils.getValueAsString(bean, field.getProperty() );

    if ( value != null && value.length() != 0 ){
      // 1文字以上の文字が入力されている場合、入力チェックをする
      if( !isAllowChar(value) ){
        // 入力チェックエラーの為、エラーメッセージをセットする
        errors.add( field.getKey(), Resources.getActionMessage(request, va, field) );

        // 入力チェックNGで終了
        return false;
      }
    }

    // 入力チェックOKで終了
    return true;
  }

  /*
  * 文字列が'ABCDE’のいずれかの場合はOK、それ以外はNG
  */
  private static boolean isAllowChar(String text) {
    String allowChars = "ABCDE";

    int chrCode;
    for ( int i = 0; i < text.length(); i++ ) {
      chrCode = (int) text.charAt(i);
      boolean flg = false;
      int allowCode;
      for ( int j = 0; j < allowChars.length(); j++ ) {
        allowCode = (int) allowChars.charAt(j);
        if ( chrCode == allowCode ) {
          flg = true;
          break;
        }
      }
      if ( flg == false ) {
        return false;
      }
    }
    return true;
  }
}

ValidatorUtils#getValueAsString()メソッドでActionFormから入力データを取得します。
Field#getProperty()メソッドは、入力チェック対象のプロパティ名を取得します。

スポンサード リンク

独自のvalidatorを実装する
独自に実装したvalidatorを設定する

アクションフォームへ
忘れっぽいエンジニアのJakarta Strutsリファレンス TOPへ