我有一个传统的Spring4 / Thymeleaf i18n应用程序 我用经典的
轻松切换语言环境org.springframework.web.servlet.i18n.LocaleChangeInterceptor
和
org.springframework.web.servlet.i18n.CookieLocaleResolver
切换时我总是发送到服务器 / home?lang = fr 。它工作正常。但我需要一个更复杂的行为。 我需要做的是在切换语言环境时保留当前页面。
我找到了这个百里香片段的半工作解决方案:
th:with="currentUrl=(${#httpServletRequest.pathInfo + '?' + #strings.defaultString(#httpServletRequest.queryString, '')})
问题是我需要实现自己的许多角落案例:
有人知道如何使用原生 Spring或Thymeleaf工具来管理此案例吗?或者我需要为Thymeleaf编写自己的处理器?
答案 0 :(得分:1)
最简单的解决方案是连接“requestURI”和“queryString”。 这种方法的缺点是,如果你在同一个链接上多次点击,那么参数就会反复添加。
解决方法是在添加参数
之前编写一个“清理”url的函数有关代码示例,请查看以下问题:Thymeleaf: add parameter to current url
答案 1 :(得分:0)
我在我的项目中使用它&它工作正常。当语言环境发生变化时,我没有专门重定向到任何URL。
@Bean
public LocaleResolver localeResolver()
{
Locale defaultLocale = new Locale( env.getProperty( Constants.DEFAULT_LOCALE ) );
CookieLocaleResolver clr = new CookieLocaleResolver();
clr.setDefaultLocale( defaultLocale );
return clr;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor()
{
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName( "lang" );
return lci;
}