環境:Spring 4.3.1spring
經過Postman進行測試時提示出錯瀏覽器
出現這個問題感到很奇怪,在另一個項目中也是進行如此的使用,都沒有出現這種狀況,也是經過一樣的方式進行接口測試。app
經過查看RequestParamMethodArgumentResolver (該類支持帶有@RequestParam註解的參數或帶有MultipartFile類型的參數)的源碼發現最終仍是經過request進行參數獲取post
而順着源碼往下看在RequestFacade 類中的parseParameters方法進行參數解析測試
但該方法有進行請求頭判斷,若是是multipart/form-data類型話,就直接跳出就不會進行參數獲取。url
這個時候忽然想到在spring中進行文件上傳須要配置CommonsMultipartResolver,因而配置後再看源碼code
發現是經過DefaultMultipartHttpServletRequest進行參數獲取,這樣就能獲取到參數。再看另一個項目果真有配置,因此可以訪問。orm
通常經過瀏覽器進行請求時contentType爲application/x-www-form-urlencoded,當文件上傳時爲multipart/form-data類型,此次出現這個問題就是因爲本身粗心沒有注意到這個細節,致使浪費了時間。接口
通常出現這種問題能夠經過如下兩個方面進行判斷:ip
1 檢查參數是否存在(若是不是必須參數可經過
進行申明)
2 檢查請求頭contenType類型默認post請求爲application/x-www-form-urlencoded,若是請求頭爲multipart/form-data(文件上傳的話,須要配置spring的CommonsMultipartResolver)