我有点震惊,想知道是否有任何方法可以减少开销。我面临的问题是我有一个JSP页面,其中包含用户ID /密码textfileds和语言作为下拉框,其中包含两种语言“EN”,“ES”。
当我提供用户/密码并从下拉列表中选择“ES”时,我对@Controller方法执行POST操作,将值保存到该用户的DB。然后我将更改后的语言添加到模型对象
model.addAttribute("language", request.getParameter("language"));
方法的返回类型是STRING(下一个JSP页面的名称)。
期望是下一个JSP页面应该以西班牙语显示。但它不会发生。我在myapp-servlet.xml中定义了“LocaleChangeResolver”,如下所示:
<bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="language" />
</bean>
在我的JSP中,我定义了tablib:
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
我试图从属性文件中读取的标签是
<spring:message code="label.formName"/>
任何人都可以帮助我,为什么JSP没有提取语言的变化,而是用英语而不是西班牙语显示文本......
先谢谢。
答案 0 :(得分:0)
如果您希望自己的程序以不同的语言“说话”,可以做几件事。
例如,我在applicationContext.xml中有以下配置:
<!-- Locale settings -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<!-- My file with messages are: messages_en.properties (for English) and messages_lt.properties (for Lithuanian) -->
<property name="basename" value="classpath:messages"/>
<property name="defaultEncoding" value="UTF-8"/>
</bean>
<bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang"/>
</bean>
<!-- I'm resolving my locale according to browser's Cookie -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="defaultLocale" value="lt"/>
</bean>
在我的情况下,我有两个文件:messages_lt.properties和messages_en.properties。在您的情况下,您需要创建名为messages_en.properties(英语)和messages_es.properties(西班牙语)的文件。每个文件都应包含:
# messages_en.properties
label.formName=My form
和
# messages_es.properties
label.formName=Mi forma
然后(正如您所提到的)您需要在JSP页面中添加taglib并使用它:
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<...>
<spring:message code="label.formName"/>
希望这会有所帮助:)
编辑:MKYONG.com的精彩教程:http://www.mkyong.com/spring-mvc/spring-mvc-internationalization-example/