#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
аргумента.