在spring mvc控制器中设置区域设置

在spring mvc控制器中设置区域设置,spring,spring-mvc,servlets,Spring,Spring Mvc,Servlets,我面临的是不同的场景。我有一个门户,它将用户的区域设置保存在数据库中。当使用日志记录时。我得到了用户详细信息,但我不知道如何在控制器中设置它 我知道我们可以使用LocaleContextHolder来设置区域设置,但我不知道它如何与控制器一起工作。请你举个例子好吗 这是我的控制器 @RequestMapping(value = "/showMotionProfile", method = RequestMethod.GET) public String showMotionProfile(Mod

我面临的是不同的场景。我有一个门户,它将用户的区域设置保存在数据库中。当使用日志记录时。我得到了用户详细信息,但我不知道如何在控制器中设置它

我知道我们可以使用
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
    方法。这样,您就可以从数据库中向其传递区域设置值

不要这样做。只需实现一个自定义的
LocaleResolver
,并对其进行适当的配置。我可以通过在我的控制器中自动连线并设置区域设置来使用它。请不要添加配置作为注释,修改您的帖子。如果您的配置存储在数据库中,您需要一个自定义的
LocaleResolver
,它最初从数据库中读取配置,存储在会话或cookie(或其他)中,并具有良好的回退功能。然后,您可以使用常规的
LocaleChangeInterceptor
来修改
Locale
。我已经在会话中保存了Locale。我是否可以通过我自己的控制器使用LocaleChangeInterceptor来更改Locale