我正在尝试删除服务器上的资源,并希望通过我网页上的普通链接执行此操作。
据我所知,点击链接时我们无法向服务器发送DELETE请求,因此我尝试使用
解决此问题<form id="aux_form" action="environment/">
<input type="hidden" name="_method" value="delete">
<input type="hidden" name="id" value="${env.id}">
</form>
我的Spring控制器方法用
注释@RequestMapping(value = "/environment/", method = RequestMethod.DELETE)
但是,我收到错误消息&#34;请求的资源不允许使用指定的HTTP方法(请求方法&#39; GET&#39;不支持)。&#34; 所以我知道我的控制器方法没有被调用,删除请求没有正确映射。
如果有人能告诉我如何正确发送此删除请求,我们将不胜感激。
谢谢:)
答案 0 :(得分:4)
这应该有效:
在web.xml文件中注册此过滤器,这会将表单中的_method隐藏参数转换为DELETE
Http请求:
<filter>
<filter-name>HttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
现在您的请求可以由此类型的处理程序处理:
@RequestMapping(value = "/environment/", method = RequestMethod.DELETE)
答案 1 :(得分:0)
您无法从<form>
标记发送DELETE请求。在您的代码中,您仍然将其作为GET发送。
您应该应用基于Ajax的解决方案。
$.ajax({
url: '/environment/',
type: 'DELETE',
success: function(result) {
// Do something with the result
}
});
或将您的@RequestMapping
注释映射到GET。