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即可