Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多页Spring引导国际化_Java_Spring_Spring Boot_Internationalization_Thymeleaf - Fatal编程技术网

Java 多页Spring引导国际化

Java 多页Spring引导国际化,java,spring,spring-boot,internationalization,thymeleaf,Java,Spring,Spring Boot,Internationalization,Thymeleaf,这是我第一次使用spring boot和thymeleaf。我的申请有两页。包含所有汽车的页面和特定汽车的配置页面 在我的标题中,我得到了一个可以更改语言的选择框。这将出现在两个页面上。当我改变语言时,我会得到一个改变语言的localeResolver。我得到了两种语言的message.properties文件 例如,如果我选择英语,页面将重新加载英语。然后,当我点击一辆汽车进入特定的汽车配置页面时,它仍然记得该使用哪种语言。但是在配置页面上,您也可以在标题中更改语言。例如,如果我点击Dutch

这是我第一次使用spring boot和thymeleaf。我的申请有两页。包含所有汽车的页面和特定汽车的配置页面

在我的标题中,我得到了一个可以更改语言的选择框。这将出现在两个页面上。当我改变语言时,我会得到一个改变语言的localeResolver。我得到了两种语言的message.properties文件

例如,如果我选择英语,页面将重新加载英语。然后,当我点击一辆汽车进入特定的汽车配置页面时,它仍然记得该使用哪种语言。但是在配置页面上,您也可以在标题中更改语言。例如,如果我点击Dutch,它也会工作

但是如果我转到上一页,它仍然有localhost:9000/locale?lang=en_GB的旧url,而不是localhost:9000/locale?lang=nl_nl

当我从一个控制器返回一个视图时,我希望它返回语言

这是我的webMvcConfig

@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
protected void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(localeChangeInterceptor());
    registry.addInterceptor(new ThymeLeafLayoutInterceptor());
}

@Bean
public LocaleResolver localeResolver(){
    SessionLocaleResolver localeResolver = new SessionLocaleResolver();
    localeResolver.setDefaultLocale(Locale.US);
    return  localeResolver;
}

@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
    LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
    localeChangeInterceptor.setParamName("lang");
    return localeChangeInterceptor;
}
这是我的控制器,它返回view search.html

 @RequestMapping(method = RequestMethod.GET)
public String search() {
    return "search";
}

如何返回带有语言参数的视图。例如:
localhost:9000/locale?lang=en_GB

我想你应该按下返回按钮(←) 如果是这样的话,这根本不是问题。
请记住,不要为您的程序提供太多功能。
你只会用不必要的代码把你的应用程序弄得乱七八糟

用户多久会在页面1中选择一种语言,然后转到页面2,在那里选择另一种语言,然后按下浏览器的返回按钮

但是,如果确实需要自己添加查询参数,则应重定向到中所述的新页面(这会导致客户端浏览器向您发送新请求):

如果有帮助,还可以在控制器方法中获取当前区域设置:

Locale locale = LocaleContextHolder.getLocale();
return "redirect:YOUR_PAGE_URL?lang=" + locale;
Locale locale = LocaleContextHolder.getLocale();
return "redirect:YOUR_PAGE_URL?lang=" + locale;