在做小demo时,进行员工数据的修改操作。遇到以下问题。
1.添加属性值,
2.ajax不能直接发送PUT请求
/**
* 如果直接发送ajax=PUT形式的请求
* 封装的数据
* 除路径上的empId其他的全为Null
* 问题:
* 请求体中有数据:
* 但是Employee对象封装不上
* update tbl_emp where emp_id = 1014
*
* 原因:Tomcat:
* 1.将请求体中的数据,封装一个map.
* 2.request.getparameter("empName")就会从这个map中取值
* 3.SpringMVC封装POJO对象的时候
* 会把POJO中中每个属性的值调用request.getparameter("email);
*
* AJAX发送PUT请求引发的血案
* PUT请求,请求体中的数据,request.getparameter("email),拿不到数据
* Tomcat一看是PUT请求不会封装请求体中的数据为map,只有POST形式的请求才封装请求体为map
* org.apache.catalina.connector.Request ;
* protected String parseBodyMethods = "POST"
* if(!getConnector().isParseBodyMethod(getMethod())){
* success = true;
* return ;
* }
*
*
*/
/**解决方案
* 我们要能支持直接发送PUT之类的请求还要封装请求体中的数据
* 1.配上HttpPutFormContentFilter
* 2.他的作用:将请求提中的数据解析包装成一个map. request被重新包装
* 3.request被重新包装:request.getparameter被()重写,就会从自己封装的map中取数据
* 员工更新方法
* @param employee
* @return
*/
配置HttpPutFormContentFilter:
</filter-mapping>
<filter>
<filter-name>HttpPutFormContentFilter</filter-name>
<filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HttpPutFormContentFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>