我正在用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'.
感谢任何帮助。
由于
答案 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
以及这些文件中的所有消息。