在我的Web应用程序中,我使用注释处理错误。一切工作正常,我可以通过“消息”参数使用自定义消息。Spring MVC自定义错误和国际化
@Digits(fraction = 0, integer = 3, message="my custom error message...")
private String price;
现在我想国际化这条消息与.properties文件,但我肯定错过了什么,我无法得到它的工作。
我的Spring配置:
<beans:bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<beans:property name="basenames" value="classpath:i18n/messages, classpath:i18n/errors" />
<beans:property name="defaultEncoding" value="UTF-8" />
</beans:bean>
<beans:bean name="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<beans:property name="validationMessageSource">
<beans:ref bean="messageSource" />
</beans:property>
</beans:bean>
<beans:bean id="localeResolver" class="org.springframework.web.servlet.i18n.FixedLocaleResolver">
<beans:property name="defaultLocale" value="fr" />
</beans:bean>
我的新豆:
@Digits(fraction = 0, integer = 3)
private String price;
我 “errors_fr.properties” 文件。我已经尝试了一切:
Digits.myBean.myNestedBean.price = my custom error message...
Digits.myNestedBean.price = my custom error message...
javax.validation.constraints.Digits.myNestedBean.price = my custom error message...
我总是从spring获得相同的通用消息,就像spring没有检测到我的.properties文件。顺便说一句,上面的消息键可以在调试时在BindingResult对象中找到。
我在这里错过了什么?
请注意,我已经在我的jsp中的国际化消息(在“messages_fr.properties”文件中),它们工作正常。
是的,你是绝对正确的!我已经尝试将一个ValidatorMessages.properties放入我的类路径中,但它不起作用。阅读完链接之后,我明白了原因:我将其称为ValidatorMessages_fr.properties,并且必须将其命名为“ValidatorMessages_fr_FR.properties”。那谢谢啦 !然而,在检查你的答案之前,我想知道,是否有某种方法可以像启动时所做的那样调用文件“errors_fr.properties”(而不是“ValidatorMessages_fr_FR.properties”)? – 2012-03-28 19:04:34
我还没有尝试过这个,但似乎是线程http://forum.springsource.org/showthread.php?86237-JSR-303-Validation-Spring-MVC-and-messages-properties中的最后一条评论,它解释了如何将消息保留在文件messages.properties中。让我知道这是否适合你,我也会尝试。 :) – vincentks 2012-03-29 16:05:29
是的,这似乎工作!但是,只使用xml配置会很好(我总是不明白为什么我的初始配置不起作用)。但这是一个不同的问题。谢谢 ! – 2012-03-30 02:35:16