在 spring mvc 控制器中设置语言环境
Setting Locale in spring mvc Controller
我正面临着不同 scenario.I 的门户,它在 database.When 中保存用户的区域设置 使用 get logging.I 正在获取用户详细信息,但我不知道如何在控制器中设置它。
我知道我们可以使用 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
并设置语言环境来使用它吗?
总的来说你是在正确的轨道上:
- 将
SessionLocaleResolver
添加到您的应用程序上下文中。
- 将
LocalChangeInterceptor
添加到您的应用程序上下文,但请注意 如果将 "locale" 作为请求参数传递给您的任何 Web 控制器,这只会更改当前语言环境.
- 或者,将 sessionLocalResolver 注入您的控制器(使用
@Autowire
或应用程序上下文 XML)并在其上调用 setLocale
方法。这样您就可以将数据库中的语言环境值传递给它。
我正面临着不同 scenario.I 的门户,它在 database.When 中保存用户的区域设置 使用 get logging.I 正在获取用户详细信息,但我不知道如何在控制器中设置它。
我知道我们可以使用 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
并设置语言环境来使用它吗?
总的来说你是在正确的轨道上:
- 将
SessionLocaleResolver
添加到您的应用程序上下文中。 - 将
LocalChangeInterceptor
添加到您的应用程序上下文,但请注意 如果将 "locale" 作为请求参数传递给您的任何 Web 控制器,这只会更改当前语言环境. - 或者,将 sessionLocalResolver 注入您的控制器(使用
@Autowire
或应用程序上下文 XML)并在其上调用setLocale
方法。这样您就可以将数据库中的语言环境值传递给它。