【发布时间】:2019-12-06 20:25:24
【问题描述】:
我有一个简单的 web 应用程序,显示带有添加和删除按钮的学生列表,如下所示:
index.html - 表格
<tr th:each="student : ${students}">
<td th:text="${student.firstName} + ' ' + ${student.lastName}"></td>
<td th:text="${student.email}"></td>
<td th:text="${student.department}"></td>
<td><a th:href="@{/delete/{id}(id=${student.id})}" class="btn btn-danger">Delete</a></td>
</tr>
IndexController.java - 用于删除
@GetMapping("/delete/{id}")
public String deleteStudent(@PathVariable Long id)
{
studentService.deleteStudentById(id);
return "redirect:/";
}
我的问题 - 为什么在我的控制器中必须是 @GetMapping 才能使用 www 页面上的删除按钮删除学生?当我有@DeleteMapping 时(我认为应该如此),我无法使用 www 页面上的 Delete 按钮删除学生。这样做时有一个405 error,但通过选择删除方法的邮递员我可以删除它。
【问题讨论】:
-
因为删除按钮只是一个链接,其样式看起来像一个按钮。始终使用 GET 方法请求链接。
-
我认为您可以将
method="delete"添加到您的a标签中。默认是获取请求。 -
您可以使用 GET 以外的其他方式获取链接??stackoverflow.com/questions/6926512/…
-
好的,现在我明白了,links = get 方法默认。谢谢解答。
-
附带说明:如果您已经尝试使用
HTTP DELETE单词,那么将/delete/作为 URI 的一部分是没有用的,您应该选择@Delete("{id}").
标签: java spring-boot mapping thymeleaf