關於Spring 國際化 No message found under code 的解決方案

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>

 

只須要把配置文件改成以下就能夠了:

 

 這個問題費了我很多時間,以此文謹記。

相關文章
相關標籤/搜索