我将一个包含对象的列表从我的控制器传递到我的 html,thymeleaf 为列表中的每个对象创建一个。
我想通过一个按钮删除一个条目并将对象 ID 传递给我的控制器以便从数据库中删除它。
但是,当我在控制器中处理发布请求时,id 属性为空。
带有 Thymeleaf 的 HTML:
<tbody>
<tr th:each="user : ${users}">
<td th:text="${user.personId}"></td>
<td th:text="${user.firstName}"></td>
<td th:text="${user.lastName}"></td>
<td>
<form th:action="@{delete_user}" method="post" th:object="${user}">
<input type="hidden" th:field="${user.personId}"/>
<button type="submit" value="Submit" class="btn btn-danger">Delete</button>
</form>
</td>
</tr>
</tbody>
控制器:
@RequestMapping(value = "/delete_user", method = RequestMethod.POST)
public String handleDeleteUser(@ModelAttribute("user") User user) {
System.out.println(user.getPersonId());
System.out.println("test");
return "redirect:/external";
}
我怎样才能使这项工作?或者还有其他方法吗?
谢谢!
原文由 cmplx96 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以尝试将
th:action="@{delete_user}"
更改为th:action="@{/delete_user}"
。或者您可以使用路径变量/查询字符串并使用 get 方法传递 id。例如 html:控制器:
要么
HTML:
控制器: