我有一个传统的 Spring4/Thymeleaf i18n 应用程序 我用 classic 轻松切换语言环境
org.springframework.web.servlet.i18n.LocaleChangeInterceptor
和
org.springframework.web.servlet.i18n.CookieLocaleResolver
切换时我总是发送到服务器/home?lang=fr。它工作正常。但我需要更复杂的行为。 我需要做的是在切换语言环境时保留当前页面。
我用这个 thymeleaf 片段找到了一个半成功的解决方案:
th:with="currentUrl=(${#httpServletRequest.pathInfo + '?' + #strings.defaultString(#httpServletRequest.queryString, '')})
问题是我需要自己实现很多极端情况:
- 当已经有任何查询参数时
- 如果有一个lang=en参数,
- 等
有人知道如何使用 native Spring 或 Thymeleaf 工具处理这种情况吗?或者我需要为 Thymeleaf 编写自己的处理器?
最佳答案
最简单的解决方案是连接“requestURI”和“queryString”。 这种方法的缺点是,如果您多次点击同一个链接,参数只会被一遍又一遍地添加。
解决方法是编写一个函数,在添加参数之前“清理”url
有关代码示例,请查看此问题:Thymeleaf: add parameter to current url
关于 Spring 和 thymeleaf : changing locale and stay on the current page,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38803656/