gpt4 book ai didi

java - 从自定义默认 Spring 验证中删除批量

转载 作者:太空宇宙 更新时间:2023-11-04 10:17:30 25 4
gpt4 key购买 nike

我正在使用从 messages.properties 读取的自定义 @NotNull 消息编写一些基本的属性验证。这些消息可以很好地阅读,但是大部分默认的 Spring 错误消息仍然如下:

 "Validation failed for argument at index 0 in method: public java.lang.String uk.co.schedulerapi.Scheduler_Rest_Controller.bookAppointment(uk.co.apidefinitions.BookAppointment) throws java.lang.Exception, with 1 error(s): [Field error in object 'bookAppointment' on field 'windowStart': rejected value [null]; codes [NotNull.bookAppointment.windowStart,NotNull.windowStart,NotNull.java.lang.String,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [bookAppointment.windowStart,windowStart]; arguments []; default message [windowStart]]; default message [windowStart parameter is required]] "

是否可以删除所有错误消息并保留我的自定义消息而不进行字符串解析?

最佳答案

是的,您可以使用全局异常处理程序来做到这一点。这是处理方法。

@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
public class GlobalExceptionHandler {

private static final Logger logger = LogManager.getLogger(GlobalExceptionHandler.class);


@ExceptionHandler({MethodArgumentNotValidException.class, ConstraintViolationException.class})
public void handleException(HttpServletResponse response, Exception ex) {
//build your custom message
prepareErrorResponse(response,UNPROCESSABLE_ENTITY,yourCustomMessage);
}



private void prepareErrorResponse(HttpServletResponse response, HttpStatus status, String apiError) {
response.setStatus(status.value());
try(PrintWriter writer = response.getWriter()) {
new ObjectMapper().writeValue(writer, apiError);
} catch (IOException ex) {
logger.error("Error writing string to response body", ex);
}
}

关于java - 从自定义默认 Spring 验证中删除批量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51516309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com