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