使用Spring ResourceBundleMessageSource和FMT进行国际化

时间:2013-10-16 13:15:22

标签: spring spring-mvc internationalization fmtonly

我们正在尝试使用Spring ResourceBundleMessageSource和FMT实现国际化。但是当我们在JSP中使用它时,页面显示的值为 ??? message.key ??? 。你能帮助我们解决这个问题吗?真的很感激你的答案。

以下是配置:

spring-servlet.xml条目

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

<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    <property name="paramName">
        <value>locale</value>
    </property>  </bean>

 <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"/>


<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping">
    <property name="interceptors">
        <list>             
            <ref bean="localeChangeInterceptor" />                          
        </list>
    </property> 
</bean>

在JSP中我们添加了导入的

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

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

同样在创建的战争中,我们在WEB-INF / messages文件夹下有msgs.properties文件。

非常感谢帮助识别我们正在犯的错误。谢谢。

3 个答案:

答案 0 :(得分:0)

我和你一样使用,我可以使用fmt:message从属性文件中检索消息。您可以尝试更改资源包:

<bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basenames">
            <list>
                <value>classpath:messages</value>
            </list>
        </property>
        <property name="defaultEncoding" value="UTF-8" />
        <property name="fallbackToSystemLocale" value="false"></property>
    </bean>

属性存储在src / main / resources中。

希望它有所帮助。

答案 1 :(得分:0)

使用FMT标记库我们无法解决问题。我相信它与我们在JBoss 7.1.1服务器上使用的jstl jar和taglib有一些关系。

我们开始使用spring tlds来显示消息。现在一切都很好。谢谢您的帮助。

答案 2 :(得分:0)

使用/ WEB-INF / messages / msgs代替WEB-INF / messages / msgs

只需在路径的开头添加“ /”。