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

Thymeleaf中如何在th:action中传递car.id动态值

Hey,我来帮你解决这个Thymeleaf路径绑定的问题~

你之前的写法之所以失效,是因为错误地把变量表达式${car.id}用引号包裹了,Thymeleaf的URL表达式(@{...})内部可以直接识别变量,不需要额外的引号。下面给你两种正确的实现方式:

1. 路径变量占位符写法(推荐,更符合RESTful风格)

如果你的后端接口是/cars/{id}这种路径变量形式,用占位符+变量绑定的方式最规范:

<p th:text="${car.id}" />
<form action="#" th:action="@{/cars/{carId}(carId=${car.id})}" method="get">
    <p><input type="submit" value="car panel" /></p>
</form>

这里{carId}是路径占位符,括号里的carId=${car.id}会把car.id的值绑定到占位符上。比如当car.id为3时,最终生成的action属性就是/cars/3。

2. 直接变量拼接写法(更简洁)

如果你的路径结构简单,也可以直接在URL里嵌入变量表达式:

<p th:text="${car.id}" />
<form action="#" th:action="@{/cars/${car.id}}" method="get">
    <p><input type="submit" value="car panel" /></p>
</form>

这种写法Thymeleaf同样会自动解析${car.id},替换为实际的id值。

为什么你的原写法不生效?

你写的@{/cars:"${car.id}"}会被Thymeleaf当作纯字符串处理,不会解析${car.id},最终生成的URL会是/cars:"${car.id}",这显然不是你想要的结果,所以记住在@{...}内部引用变量时,不要额外加引号。

内容的提问来源于stack exchange,提问作者Vas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 23:47:34