java - 为什么在 Controller 中使用 @GetMapping 而不是 @DeleteMapping 进行删除工作?

标签 java spring-boot mapping thymeleaf

我有一个简单的网络应用程序,显示带有添加和删除按钮的学生列表,如下所示: enter image description here

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:/";
    }

我的问题 - 为什么我的 Controller 中必须是 @GetMapping 才能使用 www 页面上的“删除”按钮删除学生?当我有 @DeleteMapping 时(我认为应该如此),我无法使用 www 页面上的“删除”按钮删除学生。执行此操作时出现 405 错误,但通过选择删除方法的 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>

关于java - 为什么在 Controller 中使用 @GetMapping 而不是 @DeleteMapping 进行删除工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57254807/

相关文章:

JScrollPane 中的 java 巨大的 BufferedImage

java - @Mock jpaRepository 调用真实的保存方法 @MockBean 调用模拟方法

hibernate - Grails GORM Rest 插件和 Hibernate

swift - 对象映射器将我的值设置为可选值

java - Spring 嵌套 Autowiring 泛型抛出 NoUniqueBeanDefinitionException

java - EJB3 带来了哪些特性以及 EJB3 如何与 Spring 框架相结合?

java - 如何解决无法执行语句; SQL [不适用];约束[patient_id];嵌套异常是 org.hibernate.exception.ConstraintViolationException

java - 在测试中使用 Spring JpaRepository

Python - 将字符串映射到 boolean 数组

java - 我的 JScrollPane 没有滚动