Thymeleaf URL构建

4
在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?


请查看这个答案。它应该符合您的需求。 - lu_ko
2个回答

1

我知道你之前问过这个问题,虽然已经有一段时间了。

看起来你正在寻找httpServeltRequest.requestURI。

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

而通过 #httpServletRequest.QueryString,您可以获取当前URL中给定的所有参数。不幸的是,我不确定是否可以排除任何参数。

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


queryString 只是一个字符串,要以一行表达式修改并重新构建URL会很棘手。需要将查询字符串分解为键和值,然后逐个重建URL参数。 - Alex Vayda

0

看起来Thymeleaf没有提供这样的实用程序。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接