ControllerAdvice 响应被 BasicErrorController 覆盖

问题描述 投票:0回答:1

我正在使用 Spring Boot 3.0.2,并且我已经实现了 @ControllerAdvice 来处理异常。 这是我的验证错误代码:

@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatusCode status, WebRequest request) {
    List<ExceptionDescription> errors = new ArrayList<>();

    for (ObjectError err : ex.getBindingResult().getAllErrors()) {
        if (err instanceof FieldError) {
            FieldError fieldError = (FieldError) err;
            errors.add(new ExceptionDescription(getMessageCodes().get(fieldError.getCode()), fieldError.getDefaultMessage(), fieldError.getField(), ex.getStatusCode()));
        } else {
            errors.add(new ExceptionDescription(err.getDefaultMessage(), field(ex), ex.getStatusCode()));
        }
    }

    return handleExceptionInternal(ex, errors, headers, status, request);
}

我遇到的问题是响应被 BasicErrorController 覆盖,并且我在 json 响应中没有看到 ExceptionDescriptions 数组。

奇怪的是,这在另一个项目中运行良好。

有什么想法吗?

spring-boot spring-restcontroller controller-advice
1个回答
0
投票

所以,我看到的行为是 ExceptionDescription 类没有公共 getter 方法的结果,并且抛出了一个异常,我花了一些时间才发现。

这解释了异常的原因 - 杰克逊映射异常

© www.soinside.com 2019 - 2024. All rights reserved.