MethodArgumentNotValidException не отслеживается ExceptionHandler - PullRequest
0 голосов
/ 04 июня 2019

У меня есть ExceptionHandler в модуле maven A:

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

    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseEntity<String> handleException(Exception ex) {

        return ResponseEntity
            .status(400)
            .body("test");
    }
}

И валидатор в модуле maven B:

@Target({ TYPE, ANNOTATION_TYPE })
@Retention(RUNTIME)
@Constraint(validatedBy = FilterPackDateValidator.class)
@Documented
public @interface FilterPackDateMatches {

    String message() default "Dates doesn't match";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}



public class FilterPackDateValidator implements ConstraintValidator<FilterPackDateMatches, Object> {

    @Override
    public boolean isValid(final Object obj, final ConstraintValidatorContext context) {
        final FilterPackInfosDto filter = (FilterPackInfosDto) obj;
        return filter.getPickUpDate().before(filter.getReturnDate()) /* && filter.getPickUpDate().after(new Date()) */;
    }
}

И DTO с валидатором в модуле maven B:

@FilterPackDateMatches
public class FilterPackInfosDto {
...
}

Я пытаюсь применить валидатор в модуле maven A:

@PostMapping("/packs")
public ResponseEntity<?> getAllPacks(@RequestBody @Valid Filters filters) {
        ...
}

Но исключение MethodArgumentNotValidException всегда обрабатывается "DefaultHandlerExceptionResolver".

Я пытался расширить ResponseEntityExceptionHandler или даже DefaultHandlerExceptionResolver для @ override метода, но все равно ошибка никогда не обрабатывается моим пользовательским обработчиком.Я не знаю, может ли причина в том, что валидатор и DTO не находятся в одном модуле, чем мой errorHandler.

Кстати, мой ErrorHandler обрабатывает другие ошибки (например, пользовательские исключения), и это работает нормально, так что естьнет проблем с componentScan или около того.Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...