我有問題配置Spring MessageSource忽略我的系統區域設置。當我使用null語言環境參數調用getMessage時,我希望我的MessageSource選擇默認屬性文件messages.properties。相反,它選擇messages_en.properties。當我將此屬性文件的名稱更改爲messages_fr.properties時,將選擇默認屬性文件。我的系統區域設置是'en'。所以看起來MessageSource忽略了我設置爲false的fallbackToSystemLocale屬性。春天MessageSource似乎忽略屬性fallbackToSystemLocale
此行爲與Spring 4.1.4以及4.1.5版本相同。
MessageSource的配置:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="fallbackToSystemLocale" value="false"></property>
<property name="basenames">
<list>
<value>locale/messages</value>
</list>
</property>
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
獲得消息:
String message = messageSource.getMessage("user.email.notFound", new Object[] {email}, null);
感謝您的諮詢!
感謝一個很好的答案。無論如何,你不覺得這種行爲不合邏輯嗎?我期望在提供空區域設置的情況下使用默認的消息屬性文件。如果我想使用系統本地,我會做'messageSource.getMessage(「key」,locale == null?Locale.getDefault():locale);''。即Wicket框架在我編寫時解決了這個問題,這對我來說似乎更好。 我可能會擴展'ResourceBundleMessageSource'類並覆蓋'getMessageInternal'來反映我的需求。如果它沒有被宣佈爲當然是最終的:) – 2015-03-25 12:57:30