Spring 3 MVC пространство имен и i18n - PullRequest
5 голосов
/ 18 июня 2010

Проблема с пространством имен mvc i18n и Spring 3

Я не выяснил, как решить сообщения при использовании пространства имен mvc Spring.

Например, JSP с этой строкой:

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

показывает:

???welcome.title???

У меня есть каталог сообщений в WEB-INF с messages.properties.

Вот файл web-servlet.xml (мой диспетчерский сервлет)называется веб).Любая помощь очень ценится.

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

Ответы [ 4 ]

2 голосов
/ 19 июня 2010

ResourceBundle теперь ищет ваши файлы в пакете "/ WEB-INF / messages", который не существует.

Попробуйте поместить каталог «messages» в WEB-INF / classes и замените bean-компонент messageSource на:

 <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="messages/messages" />
    <property name="cacheSeconds" value="1" />
 </bean>
1 голос
/ 25 июня 2010

На самом деле, проблема в том, что WEB-INF НЕ находится на пути к классам, поэтому ваши messages.properties в том, чтобы его не забрали.

Поместите его в WEB-INF / classes или WEB-INF / lib (хотя они не подходят для размещения файлов .properties).

Я бы посоветовал вам поставить его под: -

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

  • SE

EDIT

<property name="basename" value="messages/messages" />
1 голос
/ 23 июня 2010

Поместите следующий код в 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>

Поместите ваши messages.properties в WEB-INF / classes

И в вашем jsp вы можете ссылаться на сообщения типа

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

А ваши сообщения.свойства

button.reset=ResetFields
0 голосов
/ 29 июня 2010

Я недавно завершил проект Spring 3 с широкой локализацией и использовал тег spring: message вместо fmt: message.Вы можете попробовать Spring: сообщение, чтобы увидеть, если поведение меняется.Он должен найти ваш источник сообщения и разрешить ключ сообщения в соответствии с текущей локалью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...