Во-первых, позвольте мне объяснить, что я использую 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 мая 2012 г. Вот определение компонента, о котором просили другие:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>ErrorBundle</value>
<value>ForgotPasswordBundle</value>
<!-- etc etc -->
</list>
</property>
</bean>
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="validationMessageSource" ref="messageSource"/>
</bean>