Search

Java - Spring MVC 的自定義 Validation

2015-01-12 9:54 AM

有用Spring MVC的都知道使用@Valid註解的方便性

但Spring本身支援的驗證服務僅僅只有基本的功能

因此若有一些較複雜的驗證就必須自行實作

若善用此功能將會使程式碼顯得更優雅

以下將以檢查List是否為空作範例實作此功能

程式碼範例
//首先需定義驗證用的Annotation
@Documented
@Constraint(validatedBy = ListNotEmptyValidator.class)
@Target( { ElementType.METHOD, ElementType.FIELD } )
@Retention(RetentionPolicy.RUNTIME)
public @interface ListNotEmpty {
 String message() default "Empty list";
 Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

//接著定義Validator
public class ListNotEmptyValidator implements ConstraintValidator<ListNotEmpty, List<?>> {

 @Override
 public void initialize(ListNotEmpty constraintAnnotation) {
  
 }

 // 在此定義驗證方法
 @Override
 public boolean isValid(List<?> value, ConstraintValidatorContext context) {
  if( value == null || value.isEmpty() ) return false;
  return true;
 }

}

就這麼簡單

其實就是定義一個Annotation + 驗證用的class即可