spring创建自定义验证注解

2019-07-06  本文已影响0人  xzz4632

在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 {};
}
定义验证规则类

验证规则要实现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;
    }
上一篇 下一篇

猜你喜欢

热点阅读