Ninja Framework JSR303Валидация в фильтре
Я работаю над приложением Ninja JSON, в котором я реализую аннотации @JSR303Validation для нескольких методов контроллера. В настоящее время я проверяю проверки в самих контроллерах, передавая объект Validation и вызывая validation.hasBeanViolations()
чтобы увидеть, если есть сбои. Если есть, я возвращаю ошибочный результат клиенту.
Вместо того, чтобы делать это в контроллере, я хотел бы проверить запросы с использованием фильтра. Тем не менее, я в растерянности относительно того, как это сделать? Может ли кто-нибудь помочь? Насколько я могу судить, вы не можете передать валидации в фильтр в качестве параметра, и объект context.getValidation(), похоже, не улавливает никаких ошибок валидации.
1 ответ
В настоящее время это невозможно с использованием фильтра (по состоянию на Ninja 4.0.x). Однако вы можете реализовать это самостоятельно. Это будет работать примерно следующим образом:
- Создать фильтр
Получить содержимое входящего запроса через
context.getParameterAs("parametername", Pojo.class);
Подтвердите класс самостоятельно
javax.validation.Validation
, Вы можете более или менее скопировать и вставить подход из JSRValidator ( https://github.com/ninjaframework/ninja/blob/develop/ninja-core/src/main/java/ninja/validation/Validators.java).
Это не слишком сложно. Но это не так автоматически, как аннотирование методов в контроллерах.