« Android勉強会 | メイン | Some information on APIs removed in the Android 0.9 SDK beta - Android Developers Blog »

Validatorを自作

Hibernate Validatorで調べると、日本語ではなぜかこのサイトが一番上に出てきます。不思議ですが、せっかくなので自前のValidatorを作る方法を載せておきます。とても簡単です。

 ちなみにHibernate Validatorを使ったバリデーションは、org.hibernate.validator.ClassValidatorなどを使って明示的に実行すれば、エンティティに限らずどんなJavaBeanでも使えます。対象のクラスのことをHibernateが知っている必要はありません。

まずアノテーションから

@Documented
@ValidatorClass(StringDateValidator.class)
@Target({METHOD, FIELD})
@Retention(RUNTIME)
public @interface StringDate {
  String message() default "{errors.date}";
  String pattern() default "yyyyMMdd";
}

実装クラスはこんな感じです。

public class StringDateValidator implements Validator, Serializable {
  private static final long serialVersionUID = -7262522203009002581L;
  private String pattern;
  public void initialize(StringDate parameters) {
    pattern = parameters.pattern();
  }
  public boolean isValid(Object value) {
   if ( value == null ) return true;
   if (!(value instanceof String)) return false;
   String str = (String) value;
   if(str.length()==0) return true;
   SimpleDateFormat sdf = new SimpleDateFormat(pattern);
   sdf.setLenient(false);
   try {
    sdf.parse(str);
   } catch (ParseException e) {
    return false;
   }
   return true;
  }
}

こんな感じでアノテーションと実装のセットを作るだけで使えます。楽チンですね。

トラックバック

このエントリーのトラックバックURL:
http://www.grandnature.net/bin/mt-tb.cgi/78

コメントを投稿

About

2008年08月20日 13:50に投稿されたエントリーのページです。

ひとつ前の投稿は「Android勉強会」です。

次の投稿は「Some information on APIs removed in the Android 0.9 SDK beta - Android Developers Blog」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。