首先在对象上标注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;
}
}
``