html-SpringMVC:在表单中指定要删除的方法的问题

提问

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

我了解点击链接时,我们无法向服务器发送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’).”因此我知道未调用我的控制器方法并且删除请求未正确映射.

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

谢谢 :)

最佳答案

这应该工作:
    
    
       
       
    

在您的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)