Во-первых, позвольте мне объяснить, что я использую Spring MVC 3.1.1 и проверку Hibernate 4.2.0. Я использую аннотации проверки для различных форм в моем приложении Spring. Поскольку мое приложение должно быть локализовано, я использовал пакет ресурсов для своих сообщений проверки, который выглядит примерно так:
# ValidationMessages.bundle
FieldMatch=Password and confirmation must match.
Соответствующее определение класса для этого сообщения выглядит следующим образом:
@FieldMatch.List({
@FieldMatch(first = "password", second = "passwordConfirmation")
})
public class RegistrationForm {
//...
}
У меня есть этот пользовательский пакет ресурсов, настроенный в мой appContext.xml, и мои сообщения отображаются в форме без каких-либо проблем.
Вот моя дилемма, однако. Есть новое требование, согласно которому я должен подтвердить совпадение большего количества полей. Прямо сейчас я просто подтверждаю, что два поля пароля совпадают. Теперь мое требование состоит в том, что я также должен подтвердить адрес электронной почты. Я знаю, что это глупое требование, но я не могу его изменить. Итак, теперь определение класса будет выглядеть следующим образом:
@FieldMatch.List({
@FieldMatch(first = "password", second = "passwordConfirmation")
@FieldMatch(first = "email", second = "emailConfirmation")
})
public class RegistrationForm {
//...
}
Очевидно,мой текущий пакет ресурсов не будет работать, потому что мне нужно два отдельных сообщения (по одному для каждого совпадения ). Я пытался использовать message="{emails.must.match}"
, а затем определить это сообщение в пакете ресурсов, но на самом деле он никогда не показывает сообщение, а просто показывает фактический текст {email.must.match}
.
Итак, после всех объяснений мой вопрос прост. :Как я могу сделать так, чтобы каждый из этих FieldMatch
валидаторов на уровне класса имел другое сообщение, определенное в пакете ресурсов, чтобы его можно было локализовать?
Заранее спасибо за любую помощь!
[EDIT] Для любопытных, это является валидатором FieldMatch
, который я использую.
ОБНОВЛЕНИЕ 23.05.2012 Вот определение бина, которое просили другие:
ErrorBundle
ForgotPasswordBundle