2012-06-26 4 views
1

Я использую валидацию форм на основе аннотаций Springs (в основном @NotBlank и @Length), которая отлично работает. Я пропускание в компоненте формы методы проверки следующим образом:Проверка достоверности на основе весны на основе аннотаций

validate(formBean, result); 

У меня есть несколько аннотаций, присоединенных к различным полям формы, которые тестирующие, как ожидаются, кроме одного.

Один из моих полей в форме боба объявлен следующим образом:

private EntriesBean entries; 

Это поле, очевидно, относится к бина, который имеет обычные методы получения и установки. Пара полей в этом компоненте также содержит прикрепленные аннотации проверки, но они не проверяются как часть метода метода validate(), как это делают другие поля. Связано ли это с этим компонентом, связанным с другим компонентом, а не непосредственно с методом, который вызывает validate()?

Благодаря

ответ

0

Ответил на мой собственный вопрос.

Читая очень длинную документацию, я могу видеть, что способ сделать это состоит в использовании pushNestedPath() и popNestedPath() методы объекта BindingResult как так:

result.pushNestedPath("entries"); 
    validator.validate(form.getEntries(), result); 
    result.popNestedPath(); 

мне не нравится это способ сделать это, поскольку он выглядит довольно грязным, но он работает

0

Вы можете подтвердить ваше поле «записи» таким образом:

@Valid 
private EntriesBean entries; 

Это сделает гибернации валидатор каскад валидаций в этом компоненте

+0

Как это сравнить с методом pushNestedPath? Является ли одна из них «лучшей практикой», чем другая? – csilk

+0

Я не уверен, как Spring проверяет эти методы, метод, который я вам дал, - использовать с HibernateValidator, я не уверен, будет ли он работать с вашим. Я думаю, что с тех пор, как @Valid является стандартной аннотацией из пакета javax.validation. Вы можете взглянуть на http://docs.jboss.org/hibernate/validator/4.0.1/reference/en/html/validator-usingvalidator.html – gcesarmza

+0

Я пробовал использовать @Valid из библиотек javax, но это не помогло инициировать аннотации проверки на вложенный компонент. Я придерживался своего нынешнего способа сделать это, поскольку я не могу найти пример того, как он работает каким-либо другим способом с помощью Spring. – csilk

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