@ Действительная аннотация работает с @RequestBody, но не с RequestEntity - PullRequest
0 голосов
/ 06 июня 2018

Аннотация @Valid Spring MVC работает как положено с @RequestBody arg, но не работает с RequestEntity arg.Есть ли способ заставить его работать?

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Аннотация @Valid работала с @RequestBody, потому что RequestResponseBodyMethodProcessor (который выполняет работу по разрешению этого аргумента обработчика) ищет присутствие @Valid и, если он найден, применяет все соответствующие валидаторы, которые он находитв WebDataBinder.

С другой стороны, ResponseEntity аргументы разрешаются с помощью HttpEntityMethodProcessor, который не выполняет проверку, даже если аргумент помечен @Valid.

Конечно, вы можете выполнить валидацию вручную в методе обработчика, вызвав выбранный вами валидатор.Это, безусловно, возможно, хотя вы, возможно, захотите рассмотреть другой подход.

0 голосов
/ 06 июня 2018

@Valid не из Spring MVC, @Valid опирается на пакет javax.validation; Может быть, вы имели в виду @Validated.Тем не менее, @RequestBody и RequestEntity должны рассматриваться по-разному с точки зрения валидации.

@RequestBody используется в Spring MVC Controller для аннотирования полезной нагрузки запроса, но не имеет ничего общего с валидациейэтот входящий объект полезной нагрузки.

RequestEntity используется для упаковки фактической полезной нагрузки при подготовке нового запроса.При создании нового RequestEntity проверка не применяется.

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