Thymeleaf URL 构建

Posted

技术标签:

【中文标题】Thymeleaf URL 构建【英文标题】:Thymeleaf URL construction 【发布时间】:2013-07-04 12:08:49 【问题描述】:

Thymeleaf 中是否有任何特殊工具可以通过添加/删除/替换参数来构造 URL? 例如,我需要向同一页面发出请求,但在请求中添加了一个附加参数“p=1”。所以:

'/foo?a=b' becomes '/foo?a=b&p=1' // addition
'/foo?p=0' becomes '/foo?p=1'     // replacing

@ 在这里似乎没有帮助。 我会想象存在以下内容: @#currentUri(*, p=1, !q),其中“*”表示所有现有参数,“p=1”表示添加/替换和“!”表示排除。

Thymeleaf 是否有类似的语法或任何其他语法来构建灵活的 URL?

【问题讨论】:

请看这个answer。它应该符合您的需求。 【参考方案1】:

无论如何,当你问这个问题时,我知道它不久前。

看来您正在寻找 httpServeltRequest.requestURI

<a th:href="@$'~' + #httpServletRequest.requestURI(lang=$language)" th:text="#$'Language.' + lang"><span>Switch to English</span></a>

使用#httpServletRequest.QueryString,您可以获得当前网址中给出的所有参数。不幸的是,我不知道您是否可以排除任何参数。

来源:http://forum.thymeleaf.org/How-to-link-to-current-page-and-exchange-parameter-td4024870.html

【讨论】:

queryString 只是一个字符串,将修改后的 URL 重构为 1 行表达式会很棘手。它需要将查询字符串分解为键和值,然后按参数重构 URL 参数。【参考方案2】:

Thymeleaf 似乎没有提供任何此类实用程序。

但是,由于它利用了Spring EL,因此编写一个带有一组实用方法的帮助类并使其可供表达式调用这些方法是相当容易的。从句法上讲,它看起来非常接近问题中的假想示例:@#currentUri("*", "p=1", "!q")

【讨论】:

以上是关于Thymeleaf URL 构建的主要内容,如果未能解决你的问题,请参考以下文章

Thymeleaf 构造带有变量的 URL

Thymeleaf 获取 url 属性

使用@ url 语法传递给 Thymeleaf 的转义参数

使用 Thymeleaf 显示当前服务网关 url

如何替换 thymeleaf 链接中的 URL 参数?

Thymeleaf : 相​​对 url - 没有 webcontext