spring 在Thymeleaf中获取带参数的完整URL?

iqxoj9l9  于 2023-01-16  发布在  Spring
关注(0)|答案(1)|浏览(365)

在Sping Boot 服务器上,我有一个分页的汽车列表,其中包含sort、range、desc、page等参数,用于过滤和排序,并在Thymeleaf中生成如下URL:

example.com/cars?page=5&sort=mileage

我希望能够添加更多的参数到一个URL与其中一些已经,但我是相当新的这方面,并不真正知道如何获得当前的URL与所有的参数添加更多的参数,而不丢失以前的外观

example.com/cars?page=5&sort=mileage&desc=true

我已经找到了在Spring上做类似这样的事情的答案,但最好是在Thymeleaf模板上做,这可能吗?
Get full current url thymeleaf with all parameters
我发现您可以使用${param.sort}获取Thymeleaf中的特定参数来获取param sort,是否可以使用类似的方法获取当前所有的参数?
谢谢

bvk5enib

bvk5enib1#

如果有人仍在寻找 *thymeleaf template only解决方案 *,您可以将${#request.getRequestURI()}${#request.getQueryString()}一起使用,并通过连接添加其他参数:

<a th:href="@{${url}}" th:with="url=${#request.getRequestURI()+'?'+#request.getQueryString()+'&foo=bar'}">Link</a>

如果需要转义查询参数,可以使用#uris.escapeQueryParam()

<a th:href="@{${url}}" th:with="url=${#request.getRequestURI()+'?'+#request.getQueryString()+'&foo='+#uris.escapeQueryParam('b a r')}">Link</a>

更多详情:

  • 必须使用th:with,否则解析器在较新的thymeleaf版本中会抛出TemplateProcessingException: Access to request parameters is forbidden in this context.
  • 当当前查询为空时,它也可以工作,url生成器将创建一个有效的url,在我的例子中,在查询部分包括一个?,没有&

相关问题