2011-10-17 2 views
3

Я пытаюсь проверить форму с использованием Spring со встроенными проверками JSR-303 с внедрением Hibernate. У меня есть поле «confirm email» (emailConf), которое я хотел бы подтвердить, равно email. Я увидел пост кто-то делает это так:Spring MVC 3 Аннотации проверки - Подтвердите адрес электронной почты

public class ContactInfoForm { 

    @NotEmpty 
    private String name; 

    @NotEmpty 
    @Email 
    private String email; 

    @Expression(value = "emailConf= email", applyIf = "emailConf is not blank") 
    private String emailConf; 

    ... 
} 

Однако это emailConf проверка не работает (т.е. никакой ошибки не происходит, когда поля не совпадают). Я видел пару учебников, которые показали похожие аннотации, но больше не могут их найти или какую-либо документацию о том, как это работает. Кто-нибудь знает способ подтверждения «подтвердить адрес электронной почты/пароль» через аннотацию? В настоящее время я использую альтернативу, которая заключается в реализации Validator и проверки правильности полей в методе проверки.

+0

Откуда это аннотация '@ Expression'? – Ralph

+0

Я этого не осознавал, но аннотация @Expression от «spring-modules», которую я даже не понимал, все еще оставалась в моем пути к классу. Я поместил это в свой classpath, когда я изначально следовал руководству по валидации, но в итоге использовал JSR-303 и Hibernate Validator. Я не очень хорошо знаком с весенними модулями, но на странице форума SpringSource есть объявление от августа 2010 года, в котором говорится, что «Форум Spring Modules выведен из эксплуатации в пользу Spring Extensions». Если он больше не поддерживается, я бы предпочел не использовать эту библиотеку. –

ответ

1

Возможно, вам стоит взглянуть на это question and its answers: есть много способов обсудить, как сделать такую ​​проверку (речь идет о подтверждении пароля и пароля, но проблема такая же).

+1

Я использую реализацию на основе этого валидатора FieldMatch, и он отлично работает. – digitaljoel

+0

Я взглянул на страницу, и там есть действительно хорошие ресурсы. Я не могу понять, как связать результат ограничения уровня класса с определенным полем моей формы. Если письма не совпадают, я хотел бы, чтобы мой jsp выводил ошибку как ошибку поля emailConf. Я в настоящее время выводю ошибки с использованием формы springs: errors tag: '' –

+0

Спасибо за ресурс. Пользовательская аннотация FieldMatch кажется хорошим способом сделать это. Я также смог заставить scriptassert работать для моих нужд, но мой код был немного запутанным, чтобы получить ошибку для привязки к соответствующему полю формы. В конце концов, я просто отбросил аннотации и пошел с обычным классом валидатора. Если бы у меня было больше времени, я бы экспериментировал с этими другими решениями. Благодаря! –

1

Что вам нужно, это "Class-level constraint" (как описано JSR-303), если вы хотите сравнить 2 поля того же класса. Я не думаю, что ваш @Expression будет работать именно так.

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