spring-mvc.xml
中定义了两个bean
<bean name="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
</bean>
<bean name="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="defaultLocale" value="en" />
</bean>
和jsp中的两个锚点来切换语言
<span>
<a href="?lang=en">english</a>
|
<ahref="?lang=zh">chinese</a>
</span>
我试图在我的控制器上获取参数lang/locale
并在javascripts 之前获得结果(因为我想要i18n java脚本),但是不起作用。
request.getLocale().getDisplayName();
request.getParameter("lang");
如何在我的控制器上获取Locale
?或者对i18n java脚本有什么好主意?
提前致谢!
答案 0 :(得分:1)
如果您想要在Java中更改为另一个Locale,您可以使用:
String anotherLocale =“es”; RequestContextUtils.getLocaleResolver(request).setLocale(request,response,anotherLocale);
答案 1 :(得分:0)
@Controller
public class MyController{
@RequestMapping(value = "/test")
public test(HttpServletRequest request, HttpServletResponse response){
Locale locale = RequestContextUtils.getLocale(request);
System.out.println("Locale >>> " + locale);
}
}
结果:
Locale >>> en
答案 2 :(得分:0)
查看Spring Web MVC参数参考:http://docs.spring.io/spring/docs/4.0.0.RELEASE/spring-framework-reference/htmlsingle/#mvc-ann-arguments
支持的方法参数类型
...
java.util.Locale
表示当前请求区域设置,由最可用的区域设置解析程序确定,实际上是Servlet环境中配置的LocaleResolver
。
这意味着您只需在Controller方法中使用java.util.Locale
参数,Spring MVC就会将当前解析的语言环境分配给此参数:
@RequestMapping(value = "/{viewName}", method = GET)
public String handle(@PathVariable String viewName, Locale locale) {
return "info/" + locale.getLanguage() + '/' + viewName;
}