Я написал пользовательские Hibernate проверки ограничений для класса Money:Hibernate Validator + Spring: неправильное сообщение об ошибке проверки
@Target({METHOD, FIELD, ANNOTATION_TYPE})
@Retention(RUNTIME)
@Constraint(validatedBy = MoneyLimitedValidator.class)
@Documented
public @interface MoneyLimited {
String message() default "{error.validation.money.limited}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
Это работает отлично, за исключением сообщений об ошибках. Я вижу очень странное поведение: расслоение ресурсов нашли и сообщение разрешаться имя, но завернутые в специальные символы, которые, как правило, появляется, если сообщение не может быть решена по имени:
??Incorrect sum value._en_EN??
Здесь Incorrect sum value.
является правильное сообщение, которое принято по имени error.validation.money.limited
. Изначально мое сообщение выглядит так:
error.validation.money.limited = Incorrect sum value.
Я попытался удалить {} скобки от имени сообщения в MoneyLimited#message()
, но ничего не меняется (даже более странно).
я указал мои проверки сообщений свертка, как описано in this answer:
<annotation-driven validator="validator" />
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="validationMessageSource" ref="messageSource"/>
</bean>
Таким образом, вопрос: как исправить сообщение?
Я использую Spring Framework 3.2.4.RELEASE и Hibernate Validator 4.3.1.Final.
http://stackoverflow.com/questions/5550065/hibernate-validation-and-localized-error-messages?rq=1 может помочь? Или вы можете поставить точку останова [здесь] (http://grepcode.com/file/repo1.maven.org/maven2/org.hibernate/hibernate-validator/4.3.1.Final/org/hibernate/validator/messageinterpolation/ResourceBundleMessageInterpolator .java # ResourceBundleMessageInterpolator) –
Нет, это не помогает, потому что это на самом деле то же самое. Посмотрите на этот ответ: http://stackoverflow.com/questions/11225023/messageinterpolator-in-spring#11226683 –
(я просто размышляю): кажется, что messageresolver пытается решить проблему с ошибкой дважды: первый раз с успехом, после добавления локали (или стандартная локаль) и неприемлемо (причина?) (может быть, проблема с локализацией) –