在我们日常开发的过程中有时候对于同一个表单的数据校验是不同的,但是仅仅在前端使用非空检验或者不使用非空校验是不够完整的,在一些情况下不仅在前端需要进行数据校验,同样后端也是需要的,但是由于表单的使用场景,不同的时候对于同一个表单的数据校验是不同的,所以使用 ------- 使用分组校验来区分不同情况下的非空校验
- 首先定义一个接口
public interface InsertValidated{
}
2.在实体的对应属性上添加注解
groups = {InsertValidated.class}表明这个字段在只有分组属于 InsertValidated 这个接口的时候才进行数据校验,其他情况下不影响
@NotBlank(message="姓名为空",groups = {InsertValidated.class})
private String name;
@NotBlank(message="手机为空",groups = {InsertValidated.class})
private String phone;
@NotBlank(message="介绍为空",groups = {InsertValidated.class})
@Size(max = 500,message = "介绍不能超过200字")
private String description;
private String qq;
- controller接口接收数据时只需要标注当前接收的这个实体需要被校验即可,BindingResult 一定要写在接口的参数中,@Validated 数据校验的结果会保存在BindingResult 之中,
package org.springframework.validation.annotation;
package org.springframework.validation;
/**
* 增加接口
*/
@PostMapping("/save")
@ResponseBody
public Object save(@RequestBody @Validated(value = {InsertValidated.class}) Student stu, BindingResult result) {
/**
* 数据校验
*/
if(result.hasErrors()) {
sout(result.getFieldError().getDefaultMessage())
}
}
- 数据校验的结果错误信息即为实体中所标注的 @NotBlank(message=“手机为空”,groups = {InsertValidated.class}),message中的信息