Tôi sử dụng Spring 3.1.1 và Hibernate-validator 4.3.0.Final và có vấn đề với việc thay đổi MessageInterpolator mặc định, có thông báo xác thực từ ValidationMessages (trong classpath).MessageInterpolator trong Spring
Tôi muốn sử dụng ResourceBundleMessageInterpolator đó sẽ mất các tin nhắn từ messageSource mùa xuân của tôi
tôi đã làm một cái gì đó như thế này trong tôi ứng dụng context.xml:
<bean id="resourceBundleMessageInterpolator"
class="org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator">
<constructor-arg index="0">
<bean class="org.springframework.validation.beanvalidation.MessageSourceResourceBundleLocator">
<constructor-arg index="0" ref="messageSource"/>
</bean>
</constructor-arg>
</bean>
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="messageInterpolator" ref="resourceBundleMessageInterpolator"/>
</bean>
Và khi tôi bắt đầu ứng dụng web của tôi trong nhật ký tôi xem:
11:04:07,402 DEBUG [org.hibernate.validator.internal.engine.ConfigurationImpl] -
Setting custom MessageInterpolator of type
org.springframework.validation.beanvalidation.LocaleContextMessageInterpolator
11:04:07,402 DEBUG [org.hibernate.validator.internal.engine.ConfigurationImpl] -
Setting custom ConstraintValidatorFactory of type org.springframework .validation.beanvalidation.SpringConstraintValidatorFactory
Vì vậy, bạn có thể thấy, nó không phải là ResourceBundleMessageInterpolator mà tôi muốn. Đó là LocaleContextMessageInterpolator
Sau này khi tôi cố gắng để xác nhận một cái gì đó tôi chỉ nhận được tin nhắn từ ValidationMessages.properties, không phải từ nguồn tin mùa xuân:
11:08:09,397 DEBUG [org.hibernate.validator.resourceloading.PlatformResourceBundleLocator] -
ValidationMessages not found.
11:08:09,413 DEBUG [org.hibernate.validator.resourceloading.PlatformResourceBundleLocator] -
org.hibernate.validator.ValidationMessages found.
Như bạn có thể nhìn thấy từ ứng dụng context.xml Tôi muốn sử dụng MessageSourceResourceBundleLocator , nhưng nó được sử dụng, tôi không biết tại sao PlatformResourceBundleLocator
Bất kỳ ý tưởng nào?
Cảm ơn rất nhiều câu trả lời. Trước đó tôi đã sử dụng, phiên bản đơn giản hơn với setValidationMessageSource, như bạn đã viết. Hành vi này giống như tôi đã mô tả lúc đầu. Vấn đề là tôi bị mất một validator thuộc tính = "validator" trong của tôi. Tôi đã thêm thuộc tính và nó hoạt động. –
phải làm gì nếu tôi chỉ sử dụng mô-đun web-web, không phải là spring-webmvc? –
nơi sử dụng trình xác nhận hợp lệ trong cấu hình dựa trên chú thích – karthi