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

Java Spring Thymeleaf按钮动作创建失败:类型转换异常排查

问题解决方法

核心错误原因

你的报错是因为Thymeleaf的th:action属性里多了一个多余的单引号:

th:action="@{/bookUpdate/(id=${books.id})'}"

这个单引号导致Thymeleaf没有解析${books.id}表达式,反而把(id=${books.id})'作为字符串传递给后端,后端试图把这个字符串转成Integer类型的id,自然抛出格式异常。


具体修复步骤

1. 修正bookList.html中的表单action

把多余的单引号去掉,同时删掉无用的隐藏输入框,正确的表单代码:

<form class="form-inline my-2 my-lg-0"         
 th:action="@{/bookUpdate/(id=${books.id})}" th:object="${books}" method="get">
    <button class="btn btn-secondary my-2 my-sm-0" type="submit">Edit</button>
</form>

2. 优化BookController的bookListUpdate方法

方法里的@Valid BookDto book参数完全无用,会导致Spring尝试从请求中绑定不存在的对象,直接删除即可;同时注意视图返回路径要和bookList保持一致(如果你的页面放在views目录下):

@GetMapping("/bookUpdate/{id}")
public String bookListUpdate(@PathVariable(value = "id") Integer id, Model model) {
    model.addAttribute("book", service.findById(id));
    return "views/bookUpdate";
}

3. 额外检查点

  • 确认service.findById(id)能正确返回对应Book对象,避免空指针异常
  • 确保bookUpdate.html里的编辑表单正确绑定${book}的属性,比如用th:field="*{topic}"这类写法填充表单字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:31:05