我想通过http delete方法调用url。我试过了:onclick和th:行动但没有工作。
html代码:
<button id="delete" name="delete" th:onclick="@{'/foos/{id}'(id=${foo.id})}" th:method="delete">Delete</button>
控制器代码:
@RequestMapping(value="/foos/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable String id) {
studentService.delete(id);
return "Successfully deleted";
}
答案 0 :(得分:8)
我认为您的交易需要form
。还有这个隐藏的输入字段。
<form action="#" th:action="@{'/delete/{id}'(id=${foo.id})}" th:method="delete" >
<input type="hidden" name="_method" value="delete" />
<button type="submit" id="submitButton"> </button>
</form>
答案 1 :(得分:0)
th:method="delete"
自动为您创建隐藏的输入字段。如果您也手动添加它,则将获得两次。检查源代码。
在这里提出建议后,我仍然收到POST错误消息。我发现Spring默认情况下会忽略那些隐藏的字段。解决方案是在您的application.properties
文件中激活它:
spring.mvc.hiddenmethod.filter.enabled=true
我在应用程序中的工作代码如下:
表格:
<form action="#" th:action="@{'/books/delete/{id}'(id=${book.id})}" th:method="delete" >
<button type="submit" class="btn">
Delete
</button>
</form>
控制器:
@RequestMapping(value="/books/delete/{id}", method = RequestMethod.DELETE)
public String deleteBook(@PathVariable Long id) {
bookService.deleteBook(id);
return "books";
}