【问题标题】:Thymeleaf URL constructionThymeleaf URL 构建
【发布时间】: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。它应该符合您的需求。

标签: url uri thymeleaf


【解决方案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")}

【讨论】:

    猜你喜欢
    • 2018-09-19
    • 2020-07-28
    • 2013-02-03
    • 2015-04-19
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 2018-06-16
    相关资源
    最近更新 更多