проверка весенней загрузки объекта requestbody, не являющегося сущностью

#spring-boot #validation #annotations #entity #constraintviolationexception

Вопрос:

Когда я проверяю строковые поля @RequestBody объекта @Entity класса (в @PostMapping методе @RestController класса) с помощью @Size аннотации, я могу перехватить ConstraintViolationException в случае неправильного ввода. Но когда я пытаюсь сделать то же самое для не — @Entity @RequestBody объекта, даже используя @Valid аннотацию(с @Validated аннотацией на классе контроллера), я не могу поймать исключение, и результатом всегда является ответ 400 без каких-либо конкретных подробностей об исключении.

Я пытался использовать @ExceptionHandler метод в @ControllerAdvice классе, хотя он отлично работал @RequestParam , но не работает @RequestBody .

Поэтому мне пришлось проверить объект с помощью javax.validation.Валидатор вручную. Есть ли какой-либо другой стандартный способ сделать это, предпочтительно с помощью аннотаций?

Комментарии:

1. Вы не получите a ConstraintViolationException , когда контроллер выполнит проверку. В конечном итоге вы получите 400 неверных запросов, и в зависимости от того, что вы настроили (или разрешили spring boot), вы получите больше или меньше информации о том, что является недопустимым. В общем, вам не нужно @Validated использовать контроллер только @Valid для @RequestBody аргумента.