You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Thymeleaf构造URL传递多路径变量时参数未解析如何解决

错误原因

Thymeleaf 的 URL 表达式 @{} 不支持将路径变量的赋值逻辑紧跟在对应占位符之后,你当前的写法中(username = ${username})会被识别为URL路径的普通字符串片段,而不是变量赋值规则,所以才会出现占位符未解析直接编码输出的问题。

最优实现方案

方案1:保持路径变量传递逻辑,修正Thymeleaf写法

所有路径变量的赋值规则需要统一放在URL末尾的同一对括号内,多个变量用逗号分隔即可,修正后的th:href代码如下:

th:href="@{/api/supplier/getSupplierViewItem/{username}/{itemCode}(username=${username}, itemCode=${item.itemCode})}"

该写法完全匹配你现有的Spring MVC接口,不需要修改后端代码,框架会自动将变量值填充到对应路径占位符中,生成符合预期的请求URL。

方案2:改用请求参数传递(适合参数较多的扩展场景)

如果后续可能新增传递参数,可以选择更灵活的Query参数传递方式,无需在路径中预定义占位符:

Thymeleaf 代码调整为:

th:href="@{/api/supplier/getSupplierViewItem(username=${username}, itemCode=${item.itemCode})}"

对应Spring MVC接口调整为:

@GetMapping("/getSupplierViewItem")
public String getSupplierViewwithItem(@RequestParam("username") String username, @RequestParam("itemCode") String itemCode, ModelMap model){
    model.addAttribute("username", username);
    model.addAttribute("itemCode", itemCode);
    return "createSupplier";
}

该方式无需处理路径占位符的匹配规则,编码出错概率更低,适配性更强。


内容的提问来源于stack exchange,提问作者Jesús Navarro Hernández

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 19:15:03