美文网首页
spring创建自定义验证注解

spring创建自定义验证注解

作者: xzz4632 | 来源:发表于2019-07-06 09:33 被阅读0次

在spring中定义如@NotEmpty等类型的注解.分以下几步:

创建注解
@Target({ ElementType.FIELD, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = MobileValidator.class)
public @interface Mobile {

    String message();

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}
  • @Target: 表示注解可以用于注解哪些元素. 本例在字段和方法上.
  • @Retention: 表示注解要保留到什么时候, 本例为运行时.
  • @Constraint: 必须的注解,定义注解约束,即通过其validateBy属性指定定义验证规则的类(必须是ConstraintValidator的子类)
  • message: 自定义验证信息说明.
定义验证规则类

验证规则要实现ConstraintValidator接口.
这个接口有两个泛型参数, 第一个为对应的验证注解类型, 第二参数是校验目标的字段类型.

public class MobileValidator implements ConstraintValidator<Mobile, String> {

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        if (value == null) {
            return false;
        }

        if (value.length() != 11) {
            return false;
        }
        return true;
    }

}

完成以上两步就可以像使用其他验证注解一样使用了

测试
public class Person {

    @Mobile(message = "请输入11位电话号码")
    private String mobile;


    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

}

@RequestMapping("/test")
    public String test(@Valid Person person, BindingResult errors) {
        String res = "";
        if (errors.hasErrors()) {
            res = errors.getFieldError().getDefaultMessage();
            System.out.println(res);
        }
        return res;
    }

相关文章

网友评论

      本文标题:spring创建自定义验证注解

      本文链接:https://www.haomeiwen.com/subject/jmsuqctx.html