在spring mvc Controller中设置Locale

时间:2015-04-23 13:24:00

标签: spring spring-mvc servlets

我面临着不同的场景。我有一个门户网站,它将用户的语言环境保存在数据库中。当使用get logging。我收到用户详细信息但我不知道如何在控制器中设置它。

我知道我们可以使用LocaleContextHolder设置语言环境,但我不知道它如何与控制器一起使用。请你举个例子

这是我的控制器

@RequestMapping(value = "/showMotionProfile", method = RequestMethod.GET)
public String showMotionProfile(Model model, RedirectAttributes attributes,
        HttpServletRequest request) {

    Locale locale = LocaleContextHolder.getLocale();
    logger.info("---------->country"+locale.getCountry());

    logger.info("\n--------------showMotionProfile-----------\n");
    LocaleContextHolder.setLocale(locale.ITALIAN);
    logger.info("---------->country"+LocaleContextHolder.getLocale());

    return "showMotionProfile";
}

如果我做得对,请告诉我,因为它没有反映。

感谢您的帮助。

编辑:我在spring xml文件中有这个解析器配置:

<beans:bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleR‌​esolver"> 
    <beans:property name="defaultLocale" value="en" /> 
</beans:bean> 
<interceptors> 
    <beans:bean class="org.springframework.web.servlet.i18n.LocaleChangeI‌​nterceptor">
        <beans:property name="paramName" value="locale"></beans:property> 
    </beans:bean> 
</interceptors> 

我可以在控制器中使用@Autowired并设置区域设置吗?

1 个答案:

答案 0 :(得分:3)

一般来说,你走在正确的轨道上:

  • LocalChangeInterceptor添加到您的应用程序上下文中。
  • @Autowire添加到您的应用程序上下文中,但请注意这只会更改当前的区域设置,如果&#34; locale&#34;作为请求参数传递给任何Web控制器
  • 或者,将sessionLocalResolver注入Controller(使用setLocale或应用程序上下文XML)并在其上调用let方法。这样您就可以从数据库中传递区域设置值。