⒈編寫校驗邏輯類
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 }
⒊使用(略)