Spring-Boot如何自定义参数校验注解的错误提示信息?

控制器方法

@PostMapping("/post")

public String post(@Validated @RequestBody MyValidateParam obj) {

return obj.getClass().getSimpleName();

}

实体类,参数校验写了

@Data

public class MyValidateParam {

@NotEmpty(message = "名称不能为空n")

private String name;

@Digits(integer = 3, fraction = 2)

@Min(10)

private Double money;

}

请求入参如图,返回结果如图,message字段没有我定义的内容,控制台倒是有,如何写让返回message字段显示实体类定义的内容?

网上找到方法说自定义异常处理,如下,但是自定义的返回code等字段写死了,如何动态获取spring默认返回的,只是message字段用自定义的呢?

@ControllerAdvice

public 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

回到顶部