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


spring做國際化時經常會報:

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"
這樣的錯誤。

總結一下,有可能由以下原因造成:

1.如果你使用eclipse創建的工程是class和src分開的,那么資源屬性文件一定要放在src目錄以內

2.屬性文件名的寫法:

messages_zh_CN.properties  (中文)

messages_en_US.properties  (英文)

3.配置messageSource這個bean(注意:一定是messageSource不是messageResource ,這是Spring規定的)

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>messages</value>
</list>
</property>
</bean>

還有一個要注意的是.如果你的資源文件不是在根目錄下而在com.wzw.messages.messages目錄下的話,你就應該這樣配置了:

<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>

 

只需要把配置文件改為如下就可以了:

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM