【发布时间】:2015-04-23 13:24:00
【问题描述】:
我面临着不同的场景。我有将用户的语言环境保存在数据库中的门户。当使用获取日志记录时。我正在获取用户详细信息,但我不知道如何在控制器中设置它。
我知道我们可以使用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.SessionLocaleResolver">
<beans:property name="defaultLocale" value="en" />
</beans:bean>
<interceptors>
<beans:bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<beans:property name="paramName" value="locale"></beans:property>
</beans:bean>
</interceptors>
我可以通过在我的控制器中使用@Autowired 并设置语言环境来使用它吗?
【问题讨论】:
-
不要。只需实现自定义
LocaleResolver并适当配置即可。 -
我的 spring xml 文件中有这个解析器配置。
我可以通过在我的控制器中自动连接并设置语言环境来使用它吗? -
请不要将配置添加为cmets,修改您的帖子。如果您的配置存储在数据库中,您需要一个自定义的
LocaleResolver,它最初从数据库中读取它,存储在会话或 cookie(或其他任何东西)中,并且有一个很好的后备。然后你可以使用常规的LocaleChangeInterceptor来修改Locale。 -
我已经在会话中保存了语言环境,我可以在控制器中自己使用 LocaleChangeIntercepter 来更改语言环境
标签: spring spring-mvc servlets