【发布时间】:2014-05-19 22:33:58
【问题描述】:
我有一个带有一些验证的 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>
还有一个 ValidationMessage_en.properties 以 UTF-8 编码并用文本标记(在 Eclipse 中右键单击,属性):
javax.validation.constraints.NotNull.message=此字段不能为空
我想以具有正确编码的本地化字符串显示 thouse 消息,因此我添加了一个 UTF-8 文件 ValidationMessages_ru.properties:
javax.validation.constraints.NotNull.message=Это поле не может быть пустым
但消息显示此消息: Ðто поле не можеÑ, быÑ,ÑŒ пуÑÑ,ым
另一方面,我能够使用正确的编码自定义 spring 管理的错误消息。但 JSR303 文本的行为似乎有所不同。
【问题讨论】:
-
您确定属性文件是 UTF-8 且 Eclipse 不会自动对非 ASCII 字符进行编码吗?您是否在普通文本编辑器中检查了该文件?
-
我用notepad++做的
-
好吧,请尝试this配置。它可能与您的问题无关,但只是为了确保它不是配置问题。您使用的是什么版本的 Spring 和 Hibernate Validator?
-
Spring 版本是 3.2.3.RELEASE Hibernate 验证器是 4.2.0.Final
-
Oki,你试过链接配置吗?如果还是不行,尝试将 Hibernate Validator 升级到 4.3.1.Final。
标签: spring spring-mvc utf-8 internationalization bean-validation