如何在spring bean注释中配置messages.properties?

时间:2014-01-28 17:28:12

标签: spring spring-mvc

我正在用spring 4开始一个新项目,我很困惑如何映射我的i18n文件:messages.properties ..

在春季3,我使用的是xml配置:

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basenames" value="messages" />
</bean>
<bean id="i18n" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="locations">
        <list>
            <value>classpath:/..../messages.properties</value>
        </list>
    </property>
    <property name="ignoreResourceNotFound" value="true" />
</bean>

在我的jsps文件中,我通过以下方式访问它:

<spring:message code="any key" />

在春季4我避免使用xml配置..我尝试了以下内容:

@Bean
public ResourceBundleMessageSource messageSource() throws Exception {
    ResourceBundleMessageSource resourceBundleMessageSource = new ResourceBundleMessageSource();
    resourceBundleMessageSource.setBasename("message.properties");
    return resourceBundleMessageSource;
}

@Bean
public PropertiesFactoryBean propertiesFactoryBean() throws Exception {
    PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
    Resource resource = new ClassPathResource("messages.properties");
    propertiesFactoryBean.setLocation(resource);
    return propertiesFactoryBean;
}

该类使用@Configuration注释,但显然缺少任何东西..

当我尝试访问index.jsp时,收到以下异常:

org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspTagException: No message found under code 'application.title' for locale 'pt_BR'.

感谢任何帮助。

由于

2 个答案:

答案 0 :(得分:0)

尝试

<spring:message code="myMessage"/> with <fmt:message key="myMessage"/>

和web.xml

<context-param>
  <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
  <param-value>messages</param-value>
</context-param>

别忘了添加fmt taglib

答案 1 :(得分:0)

您需要为每种本地语言输入文件名。在您的情况下,您需要

messages_BR.properties or messages_pt_BR.properties

以及这些文件中的所有消息。