今天因程序要 做demo 的需要,研究以下spring message 机制,刚开始还以为 ResourceBundleMessageSource 只取page 的Local ,研读spring 的代码 后才发现是可以自定义Local,在网页切换语言时需要用到此功能,只需要设置一下。代码示例如下
设置代码
<%
org.springframework.web.servlet.i18n.CookieLocaleResolver cookieLocaleResolver = new org.springframework.web.servlet.i18n.CookieLocaleResolver();
String langCountry = request.getParameter("local");
// "en_us";
if ( langCountry != null)
{
java.util.StringTokenizer token = new java.util.StringTokenizer(langCountry,"_");
String lang = token.nextToken();
String country = token.nextToken();
java.util.Locale local = new java.util.Locale (lang,country);
cookieLocaleResolver.setLocale(request,response,local);
}
%>
bean 的配置
<beans>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages"/>
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/>