gpt4 book ai didi

Spring 对自定义验证消息使用了错误的编码

转载 作者:行者123 更新时间:2023-12-02 04:23:57 25 4
gpt4 key购买 nike

我有一个带有一些验证的 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=This field can't be empty

我想以正确的编码显示本地化字符串中的消息,因此我添加了一个 UTF-8 文件 ValidationMessages_ru.properties,其中包含:

javax.validation.constraints.NotNull.message=Это поле не может быть пустым

但消息显示此消息: п Рп Ð ¡ Ð µ Ð ¡

另一方面,我可以使用正确的编码自定义 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"/>

所有的功绩都必须归功于这个blog邮政。无法阅读这些字符很烦人。没有更多:message=\u042D\u0442\u043E\u043F\u043E\u043B\u0435\u043D\u0435\u043C

关于Spring 对自定义验证消息使用了错误的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22916555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com