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

Thymeleaf中按钮th:href无法跳转至编辑页面的问题

问题分析与解决方案

看起来你的问题根源在于按钮标签的使用方式不对——你给<button>加了th:href,但Thymeleaf的th:href属性是专门为链接元素(比如<a>标签)设计的,<button>本身不支持这个属性来实现跳转,而且你设置了type="submit",这个按钮又不在任何<form>标签里,点击后自然不会触发跳转行为。

好在后端的编辑页面路由是正常的(直接输URL能访问),只需要调整前端的按钮写法就行,给你几种可行的方案:

方案1:改用<a>标签(推荐)

把按钮换成<a>标签,然后用Bootstrap的btn类让它看起来像按钮,这样th:href就能正常工作了:

<a class="btn btn-warning" th:href="@{'/user/edit/' + ${user.id}}">Edycja</a>

这是最符合Web语义的做法,链接跳转本来就是<a>标签的职责,样式上完全可以和按钮一致。

方案2:保留<button>标签,添加JavaScript跳转

如果你一定要用<button>,记得把type改成button(避免默认的submit行为),然后通过JavaScript实现跳转:

<button type="button" class="btn btn-warning" th:onclick="|window.location.href='/user/edit/' + ${user.id}|">Edycja</button>

这里用了Thymeleaf的文本拼接语法|...|来动态生成跳转URL,确保每个用户对应正确的编辑页面。

方案3:把按钮放在表单里(不推荐,但可行)

把编辑按钮包裹在一个GET方法的表单里,利用表单提交来跳转:

<form th:action="@{'/user/edit/' + ${user.id}}" th:method="get">
  <button type="submit" class="btn btn-warning">Edycja</button>
</form>

这种方法虽然能实现功能,但语义上不太合适,因为跳转不是表单提交的典型场景,所以更推荐方案1。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:07:02