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