java - Thymeleaf EL 表达式使用 /?param=value 而不是 /value 生成链接
问题描述
我的 emailTemplate.html 中有一个链接模板,如下所示:
<span>To edit the invoice <a th:href="@{${editAddress}(invoiceid=${invoiceid})}">click here</a></span>
并产生:
http://localhost:8080/edit/?invoiceid=5d088b012f8c32416dbb5522
但我想拥有:
http://localhost:8080/edit/5d088b012f8c32416dbb5522
我的控制器方法:
@RequestMapping(value = "/edit/{invoiceid}", method = RequestMethod.GET, produces = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public String editInvoice(@PathVariable("invoiceid") String invoiceid, Model model) {
InvoiceData invoiceData = invoiceDataRepository.findById(invoiceid).get();
model.addAttribute("invoicedata", invoiceData);
return "edit";
}
我怎样才能做到这一点?
解决方案
挣扎了一下,我变了
<a th:href="@{${editAddress}(invoiceid=${invoiceid})}">click here</a>
至
<a th:href="@{{editAddress}{invoiceid}(invoiceid=${invoiceid},editAddress=${editAddress})}">click here</a>
现在一切正常,输出为:
http://localhost:8080/edit/5d088b012f8c32416dbb5522
推荐阅读
- c++ - Friend 函数无法访问私有变量
- r - 如何区分两个不同geom_lines的美学?
- swift - AR 对象在 RealityKit 中未正确锚定或调整大小
- javascript - 单击任何按钮时切换所有按钮文本
- r - 在 R 中查找所有成对共同点
- c - 为什么我的程序要打印这个 C 字符串?
- django - Django - 为什么我需要在使用自定义后端登录时指定 user.backend?
- blazor - 在加载子组件时在父组件中显示加载指示器。子组件是一个图像,我想显示加载直到图像完全加载
- javascript - 返回一个空数组为假?
- c# - google api调用大查询不会使用c#提供刷新令牌