Spring 和 thymeleaf : changing locale and stay on the current page

标签 spring spring-mvc url internationalization thymeleaf

我有一个传统的 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/

相关文章:

java - Hql查询类似于hibernate中的SaveOrUpdate

java - 如何从 JdbcTemplate 获取受影响的行数?

java - 如何使用 Spring Data REST 存储库创建和连接相关资源?

java - SpringMVC发送JSON数据到服务器(java)

java - 使用 Spring MVC 设置控件属性的值

javascript - EJS Node.JS Express - 当 url 具有超过 1 个参数时 css 路径问题

java - Maven项目和名称中带有unicode字符的文件

java - 如何在jsp中传递逗号分隔的列表?

c++ - 高效检查数百个可能后缀之一的字符串

python - Selenium 导航后获取当前网址?