@Null@NotNull两个注解可以放到一个dto的字段上,同时用来约束空和非空,可以通过两个注解的分组属性groups进行约束,需要注意的是,controler层的参数部分的注解需要使用@Validated而不是@Valid,该注解才支持分组属性,同时@Validated的参数需要添加需要约束的类。代码如下
DTO(新建和更新使用同一个DTO)
@Data
public class CreateUpdateDto {
@Null(groups = Insert.class,message = "新增时id为空")
@NotNull(groups = Update.class,message = "更新时id非空")
private Integer id;
@NotNull
private String title;
}
Controler
@RequestMapping(value = "/create", method = {RequestMethod.POST})
@ResponseBody
public Result create(@RequestBody @Validated(Insert.class) CreateUpdateDto createUpdateDto) {
return service.createSystemNotification(createUpdateDto);
}
@RequestMapping(value = "/update", method = {RequestMethod.POST})
@ResponseBody
public Result update(@RequestBody @Validated(Update.class) CreateUpdateDto createUpdateDto) {
return service.updateSystemNotification(createUpdatenDto);
}