1

在我的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”文件中),它们工作正常。

回答

5

我的应用程序中有类似的问题,我希望这可以帮助你。

正如在此线程,http://forum.springsource.org/showthread.php?73240-Roo-JSR-303-Validations-and-Localization讨论,你需要:

  1. 定义由注释文件ValidationMessages.properties在注释
  2. 提到的错误信息,请参阅封闭在错误信息的关键大括号:

@Digits(fraction = 0, integer = 3, message="{message.key}")

希望这有助于。

+0

是的,你是绝对正确的!我已经尝试将一个ValidatorMessages.properties放入我的类路径中,但它不起作用。阅读完链接之后,我明白了原因:我将其称为ValidatorMessages_fr.properties,并且必须将其命名为“ValidatorMessages_fr_FR.properties”。那谢谢啦 !然而,在检查你的答案之前,我想知道,是否有某种方法可以像启动时所做的那样调用文件“errors_fr.properties”(而不是“ValidatorMessages_fr_FR.properties”)? – 2012-03-28 19:04:34

+0

我还没有尝试过这个,但似乎是线程http://forum.springsource.org/showthread.php?86237-JSR-303-Validation-Spring-MVC-and-messages-properties中的最后一条评论,它解释了如何将消息保留在文件messages.properties中。让我知道这是否适合你,我也会尝试。 :) – vincentks 2012-03-29 16:05:29

+0

是的,这似乎工作!但是,只使用xml配置会很好(我总是不明白为什么我的初始配置不起作用)。但这是一个不同的问题。谢谢 ! – 2012-03-30 02:35:16