我们在开发的时候会有这样的需求,当新增时不需要校验id,但当修改时id不能为空,这时就要用到分组校验了。

第一步,新增UpdateGroup接口作为更新操作的标识

public interface UpdateGroup {
}

第二步,只有更新操作才需要校验的字段打上这个标识,其他没有这个标识的都是默认分组

@NotNull(groups = UpdateGroup.class)
private Integer id;

@ApiModelProperty(value = "用户名")
@NotEmpty
private String username;

第三步,在controller验证时加上这个分组标识,没加的就用默认分组

@ApiOperation(value = "保存用户")
@PostMapping
public Result save(@RequestBody @Validated User user) {
    return resultOk();
}

@ApiOperation(value = "修改用户")
@PutMapping
//@Validated({UpdateGroup.class, Default.class})表示UpdateGroup和默认分组都参与校验
public Result update(@RequestBody @Validated({UpdateGroup.class, Default.class}) User user) {
    return resultOk();
}

演示,修改用户时会去校验id,保存用户不会

参考项目(模块: SpringBoot-HelloWorld): https://gitee.com/huatin/java-test  

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐