Как правильно переопределить handleMethodArgumentNotValid в Spring Boot - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь переопределить метод handleMethodArgumentNotValid. Но я все еще получаю сообщение об ошибке:

Caused by: java.lang.IllegalStateException: Ambiguous @ExceptionHandler method mapped for [class org.springframework.web.bind.MethodArgumentNotValidException]

Я переопределил метод, как предлагалось в различных сообщениях (например, в Spring Rest ErrorHandling @ControllerAdvice / @Valid ) вот так:

@Order(Ordered.HIGHEST_PRECEDENCE)
@RestControllerAdvice
public class CustomExceptionHandler extends ResponseEntityExceptionHandler {

    @Override
    @ExceptionHandler(value = MethodArgumentNotValidException.class)
    protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatus status, WebRequest webRequest) {
        String message = errorMessageBuilder(ex);
        return handleExceptionInternal(ex, message, new HttpHeaders(), HttpStatus.UNPROCESSABLE_ENTITY, webRequest);
    }
}

Что я делаю не так?

С уважением,

Марсель

1 Ответ

0 голосов
/ 29 января 2020

Если вы хотите создать свой собственный ответ, попробуйте использовать приведенный ниже код.

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.class)
    protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex) {
        Map<String, Object> body = new HashMap<>();
        body.put("error", ex);
        return new ResponseEntity<>(body, HttpStatus.UNPROCESSABLE_ENTITY);
    }
}

Вы можете изменить карту на свой объект индивидуальной настройки и установить нужные фрагменты информации об ошибке. Я надеюсь, что это сработает.

...