在ssm中若是直接發送ajax=PUT的請求
1. 出現的問題 :
- 請求體中有數據
- 可是對象封裝不上,對象爲空值
- 後臺會出現報錯,顯示sql語句出現異常
緣由
- tomcat : 是將請求體中的數據,封裝一個map
- 經過getparameter 來獲取
- SpringMVC 封裝POJO對象的時候回會用上面的那個方法進行獲取
- 可是 tomcat會應爲不是post請求,就會不自動封裝
- Tomcat一看是PUT不會封裝請求體中的數據爲map,只有POST形式的請求才封裝請求體爲map
解決方法
- 配置上HttpPutFormContentFilter;
- 他的做用;將請求體中的數據解析包裝成一個map。
- request被從新包裝,request.getParameter()被重寫,就會從本身封裝的map中取數據
建議
建議這兩個攔截器都應該寫上java
<!--4. 使用Rest風格的URL,將頁面的請求能夠轉換成delete和put請求--> <filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>HiddenHttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </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>