2010-06-18 24 views
5

Problema con i18n y Spring 3 MVC espacio de nombresSpring 3 MVC espacio de nombres y i18n

no he descubierto la manera de obtener los mensajes resueltos cuando se utiliza espacio de nombres mvc de primavera.

Por ejemplo, un JSP con esta línea:

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

espectáculos:

???welcome.title??? 

que tienen un directorio de mensajes bajo WEB-INF con messages.properties.

Aquí está el servlet.xml web (mi servlet despachador se llama web). Cualquier ayuda muy apreciada.

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

entrada del archivo de registro Sólo relevante:

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

Respuesta

2

ResourceBundle ahora está buscando los archivos en el paquete "/ WEB-INF/mensajes" que no existe .

tratar de poner su directorio "mensajes" a WEB-INF/classes y reemplazar frijol MessageSource con:

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

Coloque el código siguiente en 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> 

poner sus mensajes. propiedades en WEB-INF/classes

Y en su jsp puede remitir mensajes como

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

Y sus messages.properties

button.reset=ResetFields 
1

En realidad, el problema es WEB-INF NO está en la ruta de clases, por lo que sus messages.properties en no conseguir recogidos.

Ponlo en WEB-INF/classes o WEB-INF/lib (aunque no son buenos lugares para poner archivos .properties).

le sugeriría que se pone debajo de: -

src/main/resources/o (src/main/resources/META-INF)

  • SE

EDIT

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

Recientemente completé un proyecto de Spring 3 con una extensa localización, y usé el sp anillo: etiqueta de mensaje en lugar de fmt: mensaje. Puede probar Spring: mensaje para ver si el comportamiento cambia. Debería encontrar el origen del mensaje y resolver la clave del mensaje según la configuración regional actual.