2010-06-18 77 views
5

問題的國際化和Spring MVC 3命名空間彈簧3 MVC命名空間和國際化

我還沒有想出如何使用Spring的MVC命名空間的時候得到解決的消息。

例如,與該線JSP:

<fmt:message key="welcome.title"/> 

所示:

???welcome.title??? 

我有WEB-INF下與messages.properties一個消息目錄。

這裏是web-servlet.xml(我的調度程序servlet被命名爲web)。非常感謝任何幫助。

<!-- Scans for @Controllers to deploy as beans --> 
<context:component-scan base-package="com.mylittlecompany.web.controllers" /> 

<!-- Enable annotation driven controllers, validation etc... --> 
<mvc:annotation-driven /> 

<!-- Configures Handler Interceptors --> 
<mvc:interceptors> 
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" /> 
</mvc:interceptors> 

<!-- Application Message Bundle --> 
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="basename" value="/WEB-INF/messages/messages" /> 
    <property name="cacheSeconds" value="1" /> 
</bean> 

<!-- Saves a locale change using a cookie --> 
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" /> 

<!-- Resolves view names to protected .jsp resources within the /WEB-INF/views directory --> 
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/jsp/"/> 
    <property name="suffix" value=".jsp"/> 
</bean> 

只有相關日誌文件條目:

DEBUG Thread-1 org.springframework.web.context.support.XmlWebApplicationContext - Using MessageSource [org.springframework.context.support.ReloadableResourceBundleMessageSource: basenames=[/WEB-INF/messages/messages]] 

回答

2

資源包現在正在尋找在包文件 「/ WEB-INF /消息」 不存在。

嘗試把你的 「消息」 目錄WEB-INF/classes目錄並將其替換爲messageSource豆:

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

將下面的代碼在applicationContext.xml中

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

把你的消息。屬性轉換成WEB-INF /類

而在你的jsp中你可以引用像

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 
<input name="reset" type="reset" value='<spring:message code="button.reset"/>' onclick="setLoginFocus()" /> 

而且你messages.properties

button.reset=ResetFields 
1

其實,這個問題是WEB-INF是不是在classpath中,所以你在沒有得到messages.properties回升。

把它放在WEB-INF/classes或WEB-INF/lib下(雖然它們不是放置.properties文件的好地方)。

我建議你把它下 -

的src /主/資源/ OR(SRC /主/資源/ META-INF)

  • SE

編輯

<property name="basename" value="messages/messages" /> 
0

我最近完成了一個廣泛的本地化的Spring 3項目,並使用sp ring:消息標記而不是fmt:message。你可以試試spring:message來查看行爲是否改變。它應該找到您的消息源並通過當前語言環境解析消息鍵。