我有一个包含get参数的现有URL。在单击按钮时,我希望更改一个特定的URL参数,但保留其他参数。这有可能吗?
Thymeleaf模板:
<a th:href="@{/order/details(id=3)}">在以下方面的成果:
<a href="/order/details?id=3">如果我想
id参数?上述胸腺生长因子模板的预期结果:
localhost:8080/order/details?name=test&id=3最好没有javascript。
发布于 2019-07-01 15:42:52
尽管这是一个更老的问题,但我希望这仍能有所帮助:
<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。
发布于 2017-08-10 10:39:58
从控制器中设置baseURL,然后将baseURL绑定到模板
控制器中的:
@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);
.....模板中的:
<a th:href="@{__${baseUrl}__/order/details(name=${name},id=3)}">https://stackoverflow.com/questions/45594238
复制相似问题