2011-02-04 4 views
8

Я искал вокруг какое-то время сейчас, не повезло. Inn не с использованием Spring MVC, но все же хотите использовать @javax.validation.Valid, чтобы включить проверку аргументов метода. Для того, чтобы привести примерЕсть ли стандартный способ активировать проверку бина JSR 303 с использованием аргументов аннотированного метода

public class EventServiceImpl implements IEventService { 
    @Override 
    public void invite(@Valid Event event, @Valid User user) { ... } 
} 

Использование MVC, это разрешено для @Controller аннотированных бобов с помощью простого <mvc:annotation-driven/> (см 5.7.4.3 Configuring a JSR-303 Validator for use by Spring MVC).

Использование АОП должно быть довольно тривиальным. Тем не менее, я подозреваю, что есть стандартный способ сделать это. Следовательно, возникает вопрос: существует ли аналогичная ситуация для приложений, отличных от MVC, и неконтролирующих компонентов для включения проверки ввода для аннотированных компонентов?

ответ

6

Проверка уровня метода не является частью спецификации проверки боба (JSR 303). Подтверждение уровня метода - это предложение в спецификации, добавленное в appendix C.

Hibernate Validator 4.2 (бета-версия уже выполнена) реализует это предложение и позволяет размещать аннотации JSR 303 на параметрах метода и возвращаемых значениях. Конечно, вам все равно понадобится некоторый код весеннего клея, но это не должно быть слишком сложно.

Также проверка компонента 1.1 добавит официальное утверждение уровня метода к спецификации (а не только как дополнение/рекомендация). См. Также http://beanvalidation.org/

3

Использования MVC, это разрешено для @Controller аннотированной фасоли

@Valid является просто маркером в бобах Controller, который скрывает код, который делает проверку и помещает все нарушения ограничений в Errors в хорошем путь. Весенние дизайнеры могли придумать собственную аннотацию, чтобы сделать то же самое.

Реальное использование аннотации @Valid относится к классу (bean), который вы проверяете с помощью проверки достоверности JSR 303, и его основное использование заключается в проверке графа объектов. Значение одного компонента может иметь другие ссылки bean-ссылок с аннотацией @Valid для рекурсивного подтверждения проверки.

За пределами MVC вы можете использовать настроенный валидатор для проверки любого компонента, который использует аннотации JSR 303, но, в отличие от хорошо заполненного Errors в контроллере, вам придется решить, что вы собираетесь делать с нарушениями ограничений.

Итак, чтобы ответить на ваш вопрос, нет стандартного способа. Чтобы иметь тот же внешний вид, что и в контроллере, вы можете использовать аннотацию @Valid (или создать новую) для запуска рекомендаций AOP для проверки компонента и заполнения «ViolationCollector» (что-то вроде ошибок в MVC), которые должны быть переданы в метод.

 Смежные вопросы

  • Нет связанных вопросов^_^