上一篇文章:spring mvc 3 国际化(上)——基础使用
根据域名来判断用户语言:
1.定义一个对象;SelfLocaleResolver
public class SelfLocaleResolver extends AbstractLocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest request) {
if ("127.0.0.1".equalsIgnoreCase(request.getServerName())) {
return new Locale("zh");
} else {
return new Locale("en");
}
}
@Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
}
}
这里是表示 访问的域名是 127.0.0.1 则显示为中文 访问其它为英文
2.配置文件中加入
<bean id="localeResolver" class="com.xxx.SelfLocaleResolver"/>
3.结束
LocaleChangeInterceptor的源码:
LocaleChangeInterceptor 的作用:URL中传递一个参数来修改用户语言。http://localhost:8080?change=en
public class LocaleChangeInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws ServletException {
//获取用户传递的参数
String newLocale = request.getParameter(this.paramName);
if (newLocale != null) {
//localeResolver 为在配置文件中配置的对象
LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
if (localeResolver == null) {
throw new IllegalStateException("No LocaleResolver found: not in a DispatcherServlet request?");
}
//cookie和session存储的时候才可以修改。
localeResolver.setLocale(request, response, StringUtils.parseLocaleString(newLocale));
}
return true;
}
}
附件中有源码。