我想在春天从百里香的形式致电@RequestMapping(value = "", method = RequestMethod.DELETE)
。
是否有可能从百里香中调用删除或放置请求映射方法?
请就此提出建议。
答案 0 :(得分:17)
您可以使用th:method
:
<form th:object="${commandObject}" th:action="@{/urlToCall}" th:method="delete">
这将生成一个隐藏的输入元素,将由Spring MVC拾取:
<input type="hidden" name="_method" value="delete">
答案 1 :(得分:6)
Thymeleaf是一个HTML模板引擎。 HTML不支持其put
属性的delete
或method
HTTP方法。所以,不,你不能。但是,你有其他选择。
您可以使用javascript异步发送请求。在这种情况下,您可以发送任何类型的HTTP请求。
您还可以HiddenHttpMethodFilter
使用hidden
_method=put
<input>
元素,如here所述。像
<input name="_method" type="hidden" value="PUT" />
答案 2 :(得分:2)
我找到的唯一解决方案-使用js:
添加加密:
<script th:inline="javascript">
function sendDelete(url) {
var xhttp = new XMLHttpRequest();
xhttp.open("DELETE", url, true);
xhttp.onload = function () {
let responseURL = xhttp.responseURL;
console.log("Redirecting to:", responseURL);
window.location.replace(responseURL);
};
xhttp.send();
}
</script>
并添加呼叫链接(或更改为按钮):
<a type="button" th:with="url = @{<your_url>}" th:onclick="sendDelete([[${url}]])">Delete</a>
答案 3 :(得分:2)
当我们使用ALTER INSTANCE DISABLE INNODB REDO_LOG
时,百里香叶会创建隐藏的输入,如下面的屏幕截图所示。然后 HiddenHttpMethodFilter 将发布的方法参数转换为HTTP方法。
HiddenHttpMethodFilter disabled。
您可以通过将th:method="PUT"
添加到application.properties文件中来启用此功能。
答案 4 :(得分:0)
我目前正在研究这个主题。据我了解,我们可以在不需要使用 PUT
或 DELETE
方法的情况下执行这些操作。所以你可能不需要使用 JavaScript 或其他任何东西。这些操作只能使用 Thymeleaf、HTML 和 Spring 来完成。
如果有人为此来到这里并正在寻找这样的解决方案,请查看此地址的帖子。这对我很有用。