После записи в сообщения в блоге от одного из ребят из Hibernate и после поиска в источнике Hibernate Validator, я думаю, я понял это:
public String getMessage(Locale locale, String key) {
String message = key;
key = key.toString().replace("{", "").replace("}", "");
PlatformResourceBundleLocator bundleLocator = new PlatformResourceBundleLocator(ResourceBundleMessageInterpolator.DEFAULT_VALIDATION_MESSAGES);
ResourceBundle resourceBundle = bundleLocator.getResourceBundle(locale);
try {
message = ResourceBundle.getString(key);
}
catch(MissingResourceException ) {
message = key;
}
return message;
}
Итак, сначала вам нужно создать экземпляр PlatformResourceBundleLocator
с сообщениями проверки по умолчанию.Затем вы получаете ResourceBundle
из локатора и используете его, чтобы получить ваше сообщение.Я не верю, что это выполняет какую-либо интерполяцию.Для этого вы должны использовать интерполятор;сообщение в блоге, на которое я ссылался выше, более подробно об этом.
ОБНОВЛЕНИЕ
Другой (более простой) способ - обновить applicationContext.xml
и сделать это:
<bean id="resourceBundleSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>org.hibernate.validator.ValidationMessages</value>
</list>
</property>
</bean>
Теперь ваш MessageSource
заполнен сообщениями по умолчанию, и вы можете сделать messageSource.getMessage()
.На самом деле, это, вероятно, лучший способ.