通过HiddenHttpMethodFilter使用PUT和DELETE方法会导致错误405

时间:2016-12-11 22:44:41

标签: java spring spring-mvc

我是Spring的新手,我试图让我的Spring MVC应用程序处理PUT和DELETE请求。我已在参考文档中读到HiddenHttpMethodFilter用于此目的。

以下是我的web.xml过滤器的一部分:

<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> 

<filter> 
<filter-name>springSecurityFilterChain</filter-name> 
<filter-class>org.springframework.web.filter.DelegatingFilterProxy 
</filter-class> 
</filter> 

<filter-mapping> 
<filter-name>springSecurityFilterChain</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping>

我只会显示PUT个请求发送(DELETE它是完全相同的事情)。

我从以下表单发送请求(使用隐式设置<form:/>字段的_method Spring命名空间:

<form:form name="editableForm" commandName="blogRecord" action="${update_url}" method="put"> 

和控制器方法:

@RequestMapping(method = RequestMethod.PUT, value = "/update")  
public ModelAndView update(@ModelAttribute("entity") @Valid Entity entity) { 
    ModelAndView model = new ModelAndView(); 
    service.update(entity); 
    model.setViewName("/blog/success"); 
    model.addObject("record", entity); 
    return model; 
} 

正如我在调试器中看到的那样,HiddenHttpMethodFilter实际上已执行,并且控制器方法成功执行更新并返回200,但随后在DispatcherServletFrameworkServlet中的某处返回以下错误:

HTTP Status 405 - Request method 'PUT' not supported

这种奇怪行为的原因是什么?在此先感谢=)

0 个答案:

没有答案