Spring-Boot如何自定义参数校验注解的错误提示信息?
控制器方法
@PostMapping("/post")public String post(@Validated @RequestBody MyValidateParam obj) {
return obj.getClass().getSimpleName();
}
实体类,参数校验写了
@Datapublic class MyValidateParam {
@NotEmpty(message = "名称不能为空n")
private String name;
@Digits(integer = 3, fraction = 2)
@Min(10)
private Double money;
}
请求入参如图,返回结果如图,message
字段没有我定义的内容,控制台倒是有,如何写让返回message
字段显示实体类定义的内容?
网上找到方法说自定义异常处理,如下,但是自定义的返回code
等字段写死了,如何动态获取spring默认返回的,只是message
字段用自定义的呢?
@ControllerAdvicepublic class MyExceptionHandler {
@ResponseBody
@ExceptionHandler(MethodArgumentNotValidException.class)
public Map<String, Object> handleException(Exception e) {
Map<String, Object> map = new HashMap<>();
map.put("code", "400");
map.put("message", e.getMessage());
map.put("cause", e.getCause());
return map;
}
}
回答:
@ExceptionHandler(MethodArgumentNotValidException.class) @ResponseBody
public Result error(MethodArgumentNotValidException e) {
BindingResult bindingResult = e.getBindingResult();
List<FieldError> allErrors = bindingResult.getFieldErrors();
Map<String, String> map = new HashMap<>();
for (FieldError fieldError : allErrors) {
map.put(fieldError.getField(), fieldError.getDefaultMessage());
}
// result是统一返回对象
Result<Map<String, String>> result = new Result();
result.setData(map);
return result;
}
以上是 Spring-Boot如何自定义参数校验注解的错误提示信息? 的全部内容, 来源链接: utcz.com/p/944212.html