本文主旨是如何通过注解实现接口参数验证
1.引入依赖
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.17.Final</version>
<scope>compile</scope>
</dependency>
2.controller接口参数上加上验证注解@Validated
@PostMapping("/materialPackage/create")
public Response<Object> prepareMaterialInPackage(@RequestBody @Validated MaterialPackageCreateRequest materialPackageCreateRequest) {
return new ResponseUtil<>().setData("生成物料包成
}
3.属性上加入校验注解
@Data
public class MaterialPackageCreateRequest {
@ApiModelProperty(value = "物料包名称")
@NotBlank(message = "物料包名称不能为空")
private String name;
@ApiModelProperty(value = "物料包描述")
private String description;
}
其他验证注解包括:
非空,最大,最小,长度,0,正则表达式等等
4.提示设置的错误提示
@RestControllerAdvice
public class ExceptionHandler {
@ExceptionHandler({MethodArgumentNotValidException.class})
public Response<Object> handlerNotValidException(MethodArgumentNotValidException e){
BindingResult bindingResult = e.getBindingResult();
StringBuilder errorMsg = new StringBuilder();
if (bindingResult.hasErrors()) {
List<ObjectError> errors = bindingResult.getAllErrors();
for (ObjectError objectError : errors) {
errorMsg.append(objectError.getDefaultMessage());
errorMsg.append(",");
}
errorMsg = new StringBuilder(errorMsg.substring(0, errorMsg.length() - 1));
}
return new ResponseUtil<>().setErrorMsg(new CloudBossException(errorMsg.toString()));
}
@ExceptionHandler({Exception.class})
public Response<Object> handlerException(Exception e){
return new ResponseUtil<>().setErrorMsg(new CloudBossException("xxxx");
}
}