我有一个简单的webapp,显示带有添加和删除按钮的学生列表,如下所示:
java - 为什么@GetMapping而不是@DeleteMapping可以在Controller中工作?-LMLPHP

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,但是通过Postman选择删除方法,我可以删除它。

最佳答案

@DeleteMapping注释需要一个th:method =“ delete”才能起作用。

<td>
      <form  th: action = "@ {/delete/{id}(id=${student.id})}"  th: method = "delete" >
      <input  class = "btn btn-default btn-xs"  type = "submit" = Valeur "Supprimer"  />
      </ form>
</td>

07-27 22:57