首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何替换胸腺网链接中的URL参数?

如何替换胸腺网链接中的URL参数?
EN

Stack Overflow用户
提问于 2017-08-09 14:59:48
回答 2查看 3.1K关注 0票数 4

我有一个包含get参数的现有URL。在单击按钮时,我希望更改一个特定的URL参数,但保留其他参数。这有可能吗?

Thymeleaf模板:

代码语言:javascript
复制
<a th:href="@{/order/details(id=3)}">

在以下方面的成果:

代码语言:javascript
复制
<a href="/order/details?id=3">

如果我想

  • 保存URL中的其他参数
  • 重写id参数?

上述胸腺生长因子模板的预期结果:

代码语言:javascript
复制
localhost:8080/order/details?name=test&id=3

最好没有javascript。

EN

回答 2

Stack Overflow用户

发布于 2019-07-01 15:42:52

尽管这是一个更老的问题,但我希望这仍能有所帮助:

代码语言:javascript
复制
<a th:href="@{${urlBuilder.replaceQueryParam('id', 3).build().toUriString()}}" th:with="urlBuilder=${T(org.springframework.web.servlet.support.ServletUriComponentsBuilder).fromCurrentRequest()}">

这将构建一个完整的URI字符串,包括HTTP(S)部分。因此,如果您为web应用程序使用(例如)负载均衡器,并且它不直接转发https请求,您将得到错误的URI字符串。在本例中,您必须像Zico所写的那样:在控制器中设置baseUrl并将其绑定到模板。您还可以从当前请求获得查询字符串:request.getQueryString()或在控制器中使用ServletUriComponentsBuilder类。

编辑

您可以将.scheme('https')应用于urlBuilder (@{${urlBuilder.replaceQueryParam('id', 3).scheme('https').build().toUriString()}})。例如,您可以在控制器中创建一个方法,从负载均衡器获取X-Forwarded-Proto

从这里查看示例#27:https://www.programcreek.com/java-api-examples/?api=org.springframework.web.servlet.support.ServletUriComponentsBuilder

票数 4
EN

Stack Overflow用户

发布于 2017-08-10 10:39:58

从控制器中设置baseURL,然后将baseURL绑定到模板

控制器中的

代码语言:javascript
复制
@RequestMapping(value = "/test", method = RequestMethod.GET)
  public String home(ModelMap model, HttpServletRequest req) {
  String baseUrl = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + req.getContextPath();
  ....
  model.addAttribute("baseUrl", baseUrl);
  model.addAttribute("name", name);
  .....

模板中的

代码语言:javascript
复制
<a th:href="@{__${baseUrl}__/order/details(name=${name},id=3)}">
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45594238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档