spring 驗證框架之自定義驗證注解


1 創建自定義注解(使用注解接口@interface)

 1 package com.ssm.controller.validated.annotation;
 2 
 3 import com.ssm.controller.validated.annotation.impl.PhoneVali;
 4 
 5 import javax.validation.Constraint;
 6 import javax.validation.Payload;
 7 import javax.validation.constraints.NotNull;
 8 import java.lang.annotation.*;
 9 
10 @Documented
11 @Constraint(validatedBy = PhoneVali.class)//注解實現類
12 @Target(ElementType.FIELD)//注解應用類型(在屬性域上應用)
13 @Retention(RetentionPolicy.RUNTIME)//表示保留至運行時,可以被反射讀取
14 @NotNull
15 public @interface Phone {
16     String message() default "電話號碼格式不正確";//錯誤提示信息
17     Class<?>[] groups() default {};//分組
18     Class<? extends Payload>[] payload() default {};//這個暫時不清楚作用
19 }

 

2 編寫注解實現類

 1 package com.ssm.controller.validated.annotation.impl;
 2 
 3 import com.ssm.controller.validated.annotation.Phone;
 4 
 5 import javax.validation.ConstraintValidator;
 6 import javax.validation.ConstraintValidatorContext;
 7 
 8 public class PhoneVali implements ConstraintValidator<Phone, String> {
 9     @Override
10     public void initialize(Phone phone) {
11     }
12 
13     @Override
14     public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
15         if (s == null) {
16             return false;
17         } else if(s.matches("^(13\\d|14[579]|15[^4\\D]|17[^49\\D]|18\\d)\\d{8}$")){
18             return true;
19         }else {
20             return false;
21         }
22     }
23 }

 

繼承ConstraintValidator實現初始化方法(initialize)和驗證方法(isValid)

3 與其他驗證注解一般使用

1 @Phone(groups = {AddUserValid.class})
2 private String userPhone;

 


免責聲明!

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



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