【问题标题】:Spring Boot internationalization for multiple pages多个页面的 Spring Boot 国际化
【发布时间】:2018-12-05 00:55:51
【问题描述】:

这是我第一次使用弹簧靴和百里香。我的申请有 2 页。包含所有汽车的页面和特定汽车的配置页面。

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

例如,如果我选择英语,则页面将使用英语重新加载。然后当我点击一辆车去那个特定的汽车配置页面时,它仍然记得使用什么语言。但是在配置页面上,您也可以在标题中更改语言。如果我点击例如荷兰语,它也可以工作。

但是,如果我转到上一页,它仍然有带有 localhost:9000/locale?lang=en_GB 而不是 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;
}

这是我的控制器,它返回视图 search.html

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

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

【问题讨论】:

    标签: java spring spring-boot internationalization thymeleaf


    【解决方案1】:

    我认为您按下了浏览器的返回按钮 (←)。如果是这样,那根本不是问题。
    请记住避免为您的程序提供过多的功能
    你只会用不必要的代码弄乱你的应用程序。

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

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

    return "redirect:YOUR_PAGE_URL?lang=en_GB";
    

    如果有帮助,您还可以在控制器方法中获取当前语言环境:

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

    【讨论】:

      猜你喜欢
      • 2016-02-23
      • 1970-01-01
      • 2015-07-07
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      • 2018-01-26
      • 1970-01-01
      • 2012-08-14
      相关资源
      最近更新 更多