自定義校驗注解


⒈編寫校驗邏輯類

 1 package cn.coreqi.security.validator;
 2 
 3 import javax.validation.ConstraintValidator;
 4 import javax.validation.ConstraintValidatorContext;
 5 
 6 /**
 7  * 第一個泛型是我們自定義驗證注解的名稱
 8  * 第二個泛型是驗證字段的類型
 9  */
10 public class MyConstraintValidator implements ConstraintValidator<MyConstraint,String> {
11     /**
12      * 初始化做的一些工作
13      * @param constraintAnnotation
14      */
15     @Override
16     public void initialize(MyConstraint constraintAnnotation) {
17         System.out.println("My calidator init");
18     }
19 
20     /**
21      *  校驗邏輯
22      * @param s 傳進來需要校驗的值
23      * @param constraintValidatorContext    校驗上下文
24      * @return
25      */
26     @Override
27     public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
28         System.out.println(s);
29         return true;
30     }
31 }

⒉自定義校驗注解並使用校驗邏輯類

 1 package cn.coreqi.security.validator;
 2 
 3 import javax.validation.Constraint;
 4 import javax.validation.Payload;
 5 import java.lang.annotation.ElementType;
 6 import java.lang.annotation.Retention;
 7 import java.lang.annotation.RetentionPolicy;
 8 import java.lang.annotation.Target;
 9 
10 /**
11  * 自定義一個驗證注解
12  * @author fanqi
13  */
14 @Target({ElementType.METHOD,ElementType.FIELD})   //@Target用於指定注解可以標注在那些元素上
15 @Retention(RetentionPolicy.RUNTIME) //指定當前注解是運行時注解
16 @Constraint(validatedBy = MyConstraintValidator.class) //指定當前注解是一個校驗注解,並指定校驗邏輯類
17 public @interface MyConstraint {
18 
19     /**
20      * 當校驗未通過所傳遞的信息
21      * @return
22      */
23     String message();
24 
25     Class<?>[] groups() default {};
26 
27     Class<? extends Payload>[] payload() default {};
28 }

⒊使用(略)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM