2012-07-14 41 views
0

我試圖在新的Spring MVC應用程序中獲得基本本地化。我嘗試了所有我能想到的東西,但無論我做什麼,總會遇到以下例外情況。任何幫助將不勝感激...Spring MVC本地化 - 屬性文件未找到

我已經嘗試將屬性文件添加到每個單一的目錄,但它仍然給我一個錯誤。一旦我得到它的工作,我會系統地刪除額外。

例外:

07/13/2012 21:06:00.178 [DEBUG] [org.springframework.context.support.ReloadableResourceBundleMessageSource] No properties file found for [messages] - neither plain properties nor XML 
07/13/2012 21:06:00.178 [DEBUG] [org.springframework.context.support.ReloadableResourceBundleMessageSource] No properties file found for [messages_en] - neither plain properties nor XML 
07/13/2012 21:06:00.179 [DEBUG] [org.springframework.context.support.ReloadableResourceBundleMessageSource] No properties file found for [messages_en_US] - neither plain properties nor XML 
07/13/2012 21:06:00.182 [ERROR] [org.springframework.web.servlet.tags.MessageTag] No message found under code 'test.testMessage' for locale 'en_US'. 
javax.servlet.jsp.JspTagException: No message found under code 'test.testMessage' for locale 'en_US'. 

這裏的JSP條目(FMT:消息只是表明??? ??? test.testMessage而彈簧:消息炸燬):

<h2><fmt:message key="test.testMessage" />!</h2> 
<h2><spring:message code="test.testMessage" />!</h2> 

這裏是我的比較servlet.xml文件中的配置:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="basename" value="messages" /> 
</bean> 

這裏是戰爭結構(注意,我添加了messages.properties在幾乎每個級別):

messages.properties 
src 
    messages.properties 
    main 
     messages.properties 
     java 
     ... 
     resources 
      messages.properties 
     webapp 
      index.jsp 
      messages.properties 
      WEB-INF 
       comparison-servlet.xml 
       web.xml 
       messages.properties 
       jsp 
       messages.properties 
        compare.jsp 
        globalIncludes.jsp 
      classes 
       messages.properties 
      resources 
       messages.properties 
    test 
     ... 

任何想法爲什麼它不能找到一個肯定存在的文件?我是否需要明確設置一些關於類路徑的內容?

+0

順便說一句,我目前Weblogic上運行此。我考慮過安裝Tomcat來查看它是否可行,但是在訴諸新的服務器之前想要耗盡我的選擇。 – finn0013 2012-07-14 00:26:09

回答

0

問題原來是與戰爭文件本身。當屬性文件被複制到目標目錄並顯示出它們包含在構建中時,maven pom文件被設置爲明確地從構建的工件中排除屬性文件。

一旦我刪除這個從我的POM文件,一切都開始做工精細:

<configuration> 
    <packagingExcludes>**/*.properties</packagingExcludes> 
</configuration> 
4

嘗試將messages.properties放在任何文件夾的WEB-INF目錄下,並使用basename屬性設置路徑。

例如:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="basename" value="/WEB-INF/i18n/messages" /> 
</bean> 

見的Javadoc here

+1

我再次嘗試過,它仍然是錯誤的,但是當我這次做了它時,我發現日誌中有些不同。在查找消息,messages_en和messages_en_US之前,有3個錯誤行,但現在僅搜索了找不到MessageSource的messages_en_US([/ WEB-INF/classes/messages]:無法找到基本名稱/ WEB-INF/classes/messages,locale en_US)。還有什麼我需要添加,以確保它首先查找默認消息和messages_us? – finn0013 2012-07-14 14:09:01

+1

再看一遍,錯誤信息現在也不同了。最初它是「沒有爲[消息]找到屬性文件 - 既不是純屬性也不是XML」,但現在它是沒有找到MessageSource的[/ WEB-INF/classes/messages]:無法找到基本名稱/ WEB- INF/classes/messages,locale en_US「。不知道這兩者之間有什麼區別。 – finn0013 2012-07-14 14:59:43

+0

在玩這個更多的時候,我的第一篇文章中列出的錯誤是我使用ReloadableResourceBundleMessageSource時得到的,不管我是否提供文件的路徑。我以前的評論中列出的錯誤是我用ResourceBundleMessageSource得到的,不管我是否提供了一個路徑,使用classname :,或者只使用沒有擴展名的文件名。 – finn0013 2012-07-14 18:53:37