我正在完成 Wim Deblauwe 的书“Taming Thymeleaf”(第 314 页)。我正在使用 Spring Boot 3.1.5、SpringDataJPA 映射 MySQL 数据库。虽然一切似乎都工作正常(VSCode 中没有代码警告),但我现在遇到了记录编辑功能的问题。当我单击用户记录列表右侧的用户编辑链接时,我没有到达用户记录屏幕,而是收到 404 错误和 Spring Boot 错误: Failed to conversion value of type 'java.lang.String ' 到所需类型'com.mango.aquarius.user.UserId'。请参阅随附的屏幕来查看我的代码:
新按钮有效(这很重要,因为编辑表单继承自创建表单):
单击编辑链接时会显示 Spring Boot 错误并导致 404 错误(请参阅终端窗口中的屏幕底部):
单击编辑链接时会导致白标签错误页面:
代码不显示任何警告,并且仅当我单击编辑链接时 Spring Boot 才会显示错误。
由于错误是由类型转换引起的,我首先访问我的数据库(MySQL)来检查 tab_users 结构。它确认主键 id 是一个整数:int(11) 正如预期的那样。然后我检查以下代码:
在控制器中声明路径变量时,需要指定确切的数据类型。但是,
您编写的代码是:
public String editUserForm(@PathVariable("id") UserId id, ...
这里需要将代码更改为:
public String editUserForm(@PathVariable("id") Integer id, ...
由于 URL 中传递的值是一个 Integer
注意: 在 POST 映射中也进行相同的更改。