Springboot集成validator进行同一个对象在不同场景下的校验

首先在对象上标注validator的校验注解,并指定groups,用于区分校验场景。如果校验接口继承了Default,
那么没有指定groups的字段,也会进行校验,否则只会校验指定groups的字段

1、如果springboot版本没有集成validator,手动导入validator包

2、新建两个认证规则接口.insert,update。

public class FooRuleGroups {
    public interface insert{}

    public interface update extends Default{};
}

3、对对象进行校验

public class Foo {

    @NotNull(message = "age不能为空",groups = FooRuleGroups.update.class)
    private Integer age;

    @NotBlank(message = "name不能为空",groups = FooRuleGroups.insert.class)
    private String name;

    @NotBlank(message = "id不能为空")
    private String id;

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
}

4、接口测试

 @PostMapping("/test4")
    public Object test4(@RequestBody @Validated({FooRuleGroups.update.class}) Foo foo, BindingResult bindingResult) {
        System.out.println("注解执行结束,执行业务==============================");
        if (bindingResult.hasErrors()) {
            return bindingResult.getFieldError().getDefaultMessage();
        } else {
            return foo;
        }
    }

    @PostMapping("/test5")
    public Object test5(@RequestBody @Validated({FooRuleGroups.insert.class}) Foo foo, BindingResult bindingResult) {
        System.out.println("注解执行结束,执行业务==============================");
        if (bindingResult.hasErrors()) {
            return bindingResult.getFieldError().getDefaultMessage();
        } else {
            return foo;
        }
    }
``

你可能感兴趣的:(Springboot集成validator进行同一个对象在不同场景下的校验)