Spring对定制的验证消息使用错误的编码

Borjab

我有一个带有某些验证的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文本的行为似乎有所不同。

Borjab

我发现摆脱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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章