我是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
,但随后在DispatcherServlet
或FrameworkServlet
中的某处返回以下错误:
HTTP Status 405 - Request method 'PUT' not supported
这种奇怪行为的原因是什么?在此先感谢=)