3

我正在尝试删除服务器上的资源,并希望通过网页上的普通链接来执行此操作。

我了解单击链接时,我们无法向服务器发送 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)

但是,我收到错误消息“请求的资源不允许指定的 HTTP 方法(不支持请求方法 'GET')。” 所以我知道我的控制器方法没有被调用并且删除请求没有正确映射。

如果有人能告诉我如何正确发送此删除请求,将不胜感激。

谢谢 :)

4

2 回答 2

4

这应该有效:

在您的 web.xml 文件中注册此过滤器,这会将表单中的 _method 隐藏参数转换为DELETEHttp 请求:

<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)
于 2012-08-14T12:47:22.410 回答
0

您不能从<form>标签发送 DELETE 请求。在您的代码中,您仍然将其作为 GET 发送。

您应该应用基于 ajax 的解决方案。

$.ajax({
    url: '/environment/',
    type: 'DELETE',
    success: function(result) {
        // Do something with the result
    }
});

或将您的@RequestMapping注释映射到 GET。

于 2012-08-14T08:08:05.570 回答