Java 多页Spring引导国际化
这是我第一次使用spring boot和thymeleaf。我的申请有两页。包含所有汽车的页面和特定汽车的配置页面 在我的标题中,我得到了一个可以更改语言的选择框。这将出现在两个页面上。当我改变语言时,我会得到一个改变语言的localeResolver。我得到了两种语言的message.properties文件 例如,如果我选择英语,页面将重新加载英语。然后,当我点击一辆汽车进入特定的汽车配置页面时,它仍然记得该使用哪种语言。但是在配置页面上,您也可以在标题中更改语言。例如,如果我点击Dutch,它也会工作 但是如果我转到上一页,它仍然有localhost:9000/locale?lang=en_GB的旧url,而不是localhost:9000/locale?lang=nl_nl 当我从一个控制器返回一个视图时,我希望它返回语言 这是我的webMvcConfigJava 多页Spring引导国际化,java,spring,spring-boot,internationalization,thymeleaf,Java,Spring,Spring Boot,Internationalization,Thymeleaf,这是我第一次使用spring boot和thymeleaf。我的申请有两页。包含所有汽车的页面和特定汽车的配置页面 在我的标题中,我得到了一个可以更改语言的选择框。这将出现在两个页面上。当我改变语言时,我会得到一个改变语言的localeResolver。我得到了两种语言的message.properties文件 例如,如果我选择英语,页面将重新加载英语。然后,当我点击一辆汽车进入特定的汽车配置页面时,它仍然记得该使用哪种语言。但是在配置页面上,您也可以在标题中更改语言。例如,如果我点击Dutch
@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;