我有一个带有某些验证的Spring表单,并且来自javax.validation.constraints的所有个性化消息都似乎使用了错误的编码。
让我们以此为例:
@NumberFormat(style=Style.NUMBER)
@NotNull
private BigDecimal maintenanceCosts;
与applicationContext.xml文件包含
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="defaultEncoding" value="UTF-8" />
<property name="basenames">
<list>
<value>classpath:messages</value>
<value>classpath:ValidationMessages</value>
</list>
</property>
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<property name="defaultLocale" value="en" />
</bean>
并以UTF-8编码的ValidationMessage_en.properties标记为(在Eclipse中,右键单击属性),并带有以下文本:
javax.validation.constraints.NotNull.message =该字段不能为空
我想用正确的编码在本地化的字符串中显示thouse消息,所以我添加了一个UTF-8文件ValidationMessages_ru.properties:
javax.validation.constraints.NotNull.message =该字段不能为空
但该消息示出这样的信息:ÐÑ,ополÐμнÐμможÐμÑ,d±Ñ<Ñ,ьпуÑÑ,Ñ<м
另一方面,我能够使用正确的编码来自定义spring管理的错误消息。但是,JSR303文本的行为似乎有所不同。
我发现摆脱ValidationMessages_XX.properties文件要优雅得多。只需一个支持UTF-8的文件中的所有本地化配置即可!
答案是使用resourceBundle设置验证器的ValidationMessageSource。例如:
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"
p:defaultEncoding="UTF-8"
p:basenames ="classpath:messages"/>
<!-- JSR-303 validation-->
<bean id ="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"
p:validationMessageSource-ref="messageSource"/>
所有优点必须归功于此博客文章。无法阅读thouse字符很烦人。没有更多信息:message = \ u042D \ u0442 \ u043E \ u043F \ u043E \ u043B \ u0435 \ u043D \ u0435 \ u043C
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句