在我的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