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
相关产品推荐
相关产品推荐

