Custom Hibernate Validator

Hibernate validator i kullananlar için custom bir calidator yapmak istiyorsaniz asagidaki TCKimlik validator ornegini kullanabilirsiniz.

Oncelikle bir annotation tanimi yapiyoruz.

    import java.lang.annotation.Documented;
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
     
    import org.hibernate.validator.ValidatorClass;
     
    @Target({ ElementType.FIELD, ElementType.METHOD })
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @ValidatorClass(TcKimlikValidator.class)
    public @interface TcKimlik {
     String message() default "TC kimlik numaraniz hatali";
    }

Ardindan validator sinifimizi hazirliyoruz.

    import java.io.Serializable;
    import org.hibernate.validator.Validator;
     
    public class TcKimlikValidator implements Validator<TcKimlik>, Serializable {
     
     public boolean isValid(Object value) {
      String tcKimlik = (String) value;
      if (tcKimlik != null && (tcKimlik.length() != 11 || !isDigits(tcKimlik))) {
       return false;
      }
      return true;
     }
     
     public boolean isDigits(String s) {
      return java.util.regex.Pattern.matches("\\d+", s);  
     }
     
     @Override
     public void initialize(TcKimlik value) {
     
     }
    }

Asagida ise bir kullanim ornegi var.

     
     @NotEmpty
     @Length(min = 2, max = 20)
     private String ad;
     @Email(message = "Email formatiniz hatali")
     @NotEmpty
     @Length(min = 4)
     private String email;
     
     @TcKimlik(message = "Tc Kimlik numaraniz hatali")
     private String tcKimlikNo;
  1. ddemirel
    May 27th, 2011 at 10:00 | #1

    hocam buradaki mesajları sistemde oturum açmış kullanıcının diline göre nasıl dinamik değiştirebiliriz?

  2. May 27th, 2011 at 10:01 | #2

    Hemen bununla ilgili bir sey yazalim :)

  3. May 31st, 2011 at 20:53 | #3

    TcKimlik icerisindeki kodu asagidaki gibi degistirip validation properties dosyasina eklersen mesajlar i18n standartlarina gore gelir ;)

    String message() default “{validator.tcKimlikUyari}”;

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>