从控制器到spring内部化语言的变化

从控制器到spring内部化语言的变化,spring,spring-boot,spring-mvc,internationalization,spring-internationalization,Spring,Spring Boot,Spring Mvc,Internationalization,Spring Internationalization,在spring internalization中,我使用这个配置 @Bean public LocaleResolver localeResolver() { //for this demo, we'll use a SessionLocaleResolver object //as the name implies, it stores locale info in the session SessionLocaleResolver resolver = new Ses

在spring internalization中,我使用这个配置

@Bean
public LocaleResolver localeResolver() {
    //for this demo, we'll use a SessionLocaleResolver object
    //as the name implies, it stores locale info in the session
    SessionLocaleResolver resolver = new SessionLocaleResolver();

    //default to US locale
    resolver.setDefaultLocale(Locale.US);

    //get out
    return resolver;
}


/**
 * This interceptor allows visitors to change the locale on a per-request basis
 * @return a LocaleChangeInterceptor object
 */
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
    //instantiate the object with an empty constructor
    LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();

    //the request param that we'll use to determine the locale
    interceptor.setParamName("lang");

    //get out
    return interceptor;
}


/**
 * This is where we'll add the intercepter object
 * that handles internationalization
 */
@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(localeChangeInterceptor());
}
我能够从
html
更改语言,即脚本及其工作状态良好

window.location.replace(“?lang=”+selectedOption)

但有什么方法可以从控制器中更改它,因为首选语言将存储在DB中

因此,将获取并设置语言

范例

u = ucr.findByNameContaining(name);
u.getLanguage 
<< i have to set language returned from above line >>

@RequestMapping(value = {"/welcome"}, method = RequestMethod.POST)
public String notificationChannelSearchPost(ModelMap model,HttpSession session
        ,@RequestParam(value="name", defaultValue="") String name) {


     u = ucr.findByNameContaining(name);
     u.getLanguage 
<< i have to set language returned from above line >>
    return "welcom.html";
}
u=ucr.findByNameContaining(名称);
u、 getLanguage
>
@RequestMapping(值={“/welcome”},方法=RequestMethod.POST)
公共字符串通知ChannelSearchPost(ModelMap模型,HttpSession会话
,@RequestParam(value=“name”,defaultValue=“”)字符串名称){
u=ucr.findByNameContaining(名称);
u、 getLanguage
>
返回“welcom.html”;
}

谢谢

您可以在Java中手动设置spring语言环境,方法如下

LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);             
localeResolver.setLocale(request, response,new Locale(u.getLanguage()));

您可以通过如下操作在Java中手动设置spring语言环境

LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);             
localeResolver.setLocale(request, response,new Locale(u.getLanguage()));

非常感谢,我确实在上面一行尝试了,而不是将新的区域设置作为第三个参数发送给您。getlanguage()非常感谢,我确实在上面一行尝试了,而不是将新的区域设置作为第三个参数发送给您。getlanguage()我刚刚发送给您