Spring boot 自定义注解校验

3 1.在已有的公共方法中新增一个校验方法

1.新增一个注解类

    public static boolean isChineseStr(String str){
        Pattern pattern = Pattern.compile("[\u4e00-\u9fa5]");
        char c[] = str.toCharArray();
        for(int i=0;i

 2.新增一个注解

@Target({ElementType.METHOD,ElementType.FIELD,ElementType.ANNOTATION_TYPE,ElementType.CONSTRUCTOR,
        ElementType.PARAMETER,ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = IsChineseValidator.class)
public @interface IsChineseStr {
    //默认手机号码不可为空
    boolean required() default true;
    //如果校检不通过时提示信息
    String message() default "请输入中文姓名";

    Class[] groups() default { };

    Class[] payload() default {};
}

 3.新建注解实现方法

public class IsChineseValidator implements ConstraintValidator {
    //用于获取校检字段是否可以为空
    private boolean required = false;

    /**
     * 用于获取注解
     *
     * @param constraintAnnotation
     */

    public void initialize(IsMobile constraintAnnotation) {
        required = constraintAnnotation.required();
    }

    /**
     * 用于校检字段是否合法
     *
     * @param value 带校检的字段
     * @param constraintValidatorContext
     * @return 字段检验结果
     */
    public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {

        if (required) {
            return ValidatorUtils.isChineseStr(value);//检验结果
        } else {
            if (StringUtils.isEmpty(value))
                return true;
            else
                return ValidatorUtils.isChineseStr(value);//检验结果
        }
    }
}

你可能感兴趣的:(spring,boot,java,spring)