在春季 mvc 控制器中设置语言环境



我面临着不同的情况。我有将用户的语言环境保存在数据库中的门户。当使用获取日志记录时。我正在获取用户详细信息,但我不知道如何在控制器中进行设置。

我知道我们可以使用 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并设置区域设置来使用它吗?

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

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

最新更新