原因
Tomcat将提交的表单的数据封装到一个Map中,SpringMVC会通过调用request.getParameter("key")
的方法来拿到对象对应属性的值。
但是Tomcat默认只处理POST方法中的数据,PUT方法传递的数据默认不被封装。
解决方法
SpringMVC有一个过滤器可以处理这种情况,这个过滤器重写了Tomcat中的相关方法,使其支持了解析PUT
,DELETE
和PATCH
方法中携带的表格参数。
在web.xml中配置对应的过滤器即可
<filter>
<filter-name>formContentFilter</filter-name>
<filter-class>org.springframework.web.filter.FormContentFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>formContentFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>