用spring作國際化時常常會報:html
org.springframework.context.NoSuchMessageException: No message found under code 'userlogin' for locale 'zh_CN'.
at org.springframework.context.support.DelegatingMessageSource.getMessage(DelegatingMessageSource.Java:65)
at org.springframework.context.support.AbstractApplicationContext.getMessage(AbstractApplicationContext.java:646)
at com.neusoft.Test.Test.main(Test.java:43)
Exception in thread "main"
這樣的錯誤。java
總結一下,有可能由如下緣由形成:spring
1.若是你使用eclipse建立的工程是class和src分開的,那麼資源屬性文件必定要放在src目錄之內eclipse
2.屬性文件名的寫法:post
messages_zh_CN.properties (中文)spa
messages_en_US.properties (英文).net
3.配置messageSource這個bean(注意:必定是messageSource不是messageResource ,這是Spring規定的)code
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>messages</value>
</list>
</property>
</bean>xml
還有一個要注意的是.若是你的資源文件不是在根目錄下而在com.wzw.messages.messages目錄下的話,你就應該這樣配置了:htm
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>com.wzw.messages.messages</value>
</list>
</property>
</bean>
PS:1 我一開始作spring 國際化的時候也遇到了這個問題,花了差很少一個小時才找到問題根源:若是你使用eclipse創建的工程是class和src分開的,那麼資源屬性文件必定要放在src目錄之內,若是建立資源文件時候是經過工程右鍵建立,那麼myeclipse默認是放在WebRoot並列的根文件夾下
2,屬性文件名不必定要是message或是messages,能夠根據本身愛好隨意取,可是記住必定要在配置文件(**.xml)文件中的<value>???</value>中填入本身取好的名字,好比新建一個資源文件alias_zh_CN.properties,那麼配置文件應該這麼寫:<value>alias</value>,我親自試過,是可行的.
3 ,這篇文章是轉載自新浪博客,本意是讓初學者少走彎路,原文URL:http://blog.sina.com.cn/s/blog_4cab775e01000a14.html
我出現這個異常的緣由是由於個人配置文件不是在根目錄下,如圖:
可是個人配置以下:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>messages</value>
</list>
</property>
</bean>
只須要把配置文件改成以下就能夠了:
這個問題費了我很多時間,以此文謹記。