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 }
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 }
1 @Phone(groups = {AddUserValid.class}) 2 private String userPhone;