html - 无法将“java.lang.String”类型的值转换为所需的“long”类型;
问题描述
我正在建立一个课程预订网站。现在正在研究“编辑”功能。作为管理员,我可以编辑现有页面并保存它。我试图写它,但有以下错误:
Failed to convert value of type 'java.lang.String' to required type 'long'; nested exception is java.lang.NumberFormatException: For input string: "editKursInfo"]
我的控制器:
@GetMapping("/editKursInfo/{id}")
public String editKursInfo(Model model, @PathVariable("id") long id,
HttpSession session) {
Kurs kurs = data.getKursById(id);
model.addAttribute("kurs", kurs);
model.addAttribute("edit", kurs);
return "editKursInfo";
}
@PostMapping("/editKursInfo/{id}")
public String editKursInfo(Model model,
@Valid @ModelAttribute("edit") Kurs kurs,
BindingResult bindingresult ,@PathVariable("id") long id
) {
data.saveKurs(kurs);
return "redirect:/editKurs";
}
和HTML:
<form action="editKursInfo" method="POST"
th:object="${edit}">
<table width="100%" align="center">
<tr>
<td>
<table width="100%">
<tr>
<tr> <td align="left" >Kurs Name</td>
<td>
<input th:field="*{kursName}"
type="text"
align="left"
class="form-control"
style="width:250px;"
th:errorclass="is-invalid"
id="kursNameInput"
value=""/><br>
<div th:if="${#fields.hasErrors('kursName')}" th:errors="*{kursName}" class="invalid-feedback"> </div>
</td>
</tr>
</table>
</td>
</tr>
</table>
<button type="submit" id="submit" class="btn btn-primary" style="float: right;margin-right: 85px; width: 150px;" >submit</button>
</form>
解决方案
标签的action
属性<form>
没有id
您需要的路径变量@PostMapping
。
调整以使用类似的东西:
<form th:action="@{/editKursInfo/{id}(id=${edit.id})}"
method="POST"
th:object="${edit}">
PS:在您的@GetMapping
方法中,您在 2 个键下拥有相同的 Java 对象:
model.addAttribute("kurs", kurs);
model.addAttribute("edit", kurs);
没有必要这样做。
PS 2:最好不要edit
在你的 URL 中使用。我建议使用/kurse/{id}
or /kurseinfo/{id}
。您正在编辑某些内容或只是查看某些内容这一事实由 GET 或 POST 映射决定。
推荐阅读
- javascript - 在数据库中存储营业时间:如何检查商店是否营业?
- postgresql - 如何使用 postgis 函数填充多边形之间的间隙
- sql - 从包(oracle、sql)调用函数时参数的数量或类型错误
- python - 在python中读取一个不断更新的列表
- c# - AKS 群集内 Azure Functions 的 CORS 问题
- android - Android react-native-webview “SSL 错误:主机名不匹配” (expo)
- reactjs - Howler 不会加载和播放声音文件
- html - 指导:HTML表格格式
- go - 我如何解释当我尝试使用 http.ListenAndServe() 时收到的错误消息?
- java - RN callkeep: error cannot find symbol with FOREGROUND_SERVICE_TYPE_MICROPHONE