關於國際化時報org.springframework.context.NoSuchMessageException錯,具體到No message found under code '你的鍵名' for locale 'zh_CN'.的解決方案


使用IntelliJ IDEA開發工具解決方案:

總結原因,解決方案:

1,在使用messageSource.getMessage方法時,參數1的鍵名跟屬性文件中鍵名不一致,比如Controller中是name ,而配置文件中卻是names

2,因為使用springMvc提供了MessageSource類,所有也順帶給我們配置好了bean,我們只需注入(按名稱注入)就行,但是要去總配置文件,也就是application,properties配置中添加

#為了spring找到資源文件
spring.messages.basename=message

 

 

使用Exlicps開發工具解決方案

總結原因:

1.如果你使用eclipse創建的工程是class和src分開的,那么資源屬性文件一定要放在src目錄以內。
2.屬性文件名的寫法:
messages_zh_CN.properties (中文)
messages_en_US.properties   (英文)
3.配置messageSource這個bean(注意:一定是messageSource不是messageResource ,這是Spring規定的)
 
一般報這個錯,都是路徑問題,所有改變bean的路徑
默認配置是:
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basenames">
            <list>
                <!--默認到當前web應用下找 -->
                <value>classpath*:messages</value>
                <value>classpath:org/hibernate/validator/ValidationMessages</value>
            </list>
        </property>
        <property name="useCodeAsDefaultMessage" value="false"/>
        <property name="defaultEncoding" value="UTF-8"/>
        <property name="cacheSeconds" value="60"/>
</bean>

改變路徑位置:比如你的屬性文件放在resources/message/messages.propeties,那么就改變路徑為:

    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basenames">
            <list>
                <!-- 默認到當前web應用下找  -->
                <value>classpath:/messages/messages</value>
                <value>classpath:/messages/ValidationMessages</value>
            </list>
        </property>
        <property name="useCodeAsDefaultMessage" value="false"/>
        <property name="defaultEncoding" value="UTF-8"/>
        <property name="cacheSeconds" value="60"/>
    </bean>

 

問題解決方案純粹個人方式,若有不足,請評論區提出,謝謝


免責聲明!

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



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