Spring MVC無法正確接收From表單參數(shù)的解決方案
問題描述
先看有問題的代碼:
controller:
@ResponseBody
@PostMapping(value = "/addUser")
public String addUser(@RequestBody AdminPersonVo adminPersonVo) {
return "success";
}
js:
$(form).ajaxSubmit({
url:"/addUser",
type:"POST",
contentType: 'application/json;charset=utf-8',
filtering: function(el, index) {
if ( !$(el).hasClass('ignore') ) {
return el;
}
},
success: function (data) {
alert(data);
}
});
表單提交報錯如下:
.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized token 'name': was expecting 'null', 'true', 'false' or NaN; nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'name': was expecting 'null', 'true', 'false' or NaN?
錯誤信息大概意思是: jackson 無法正確解析 json 。
開始踏上尋找解決之路……
看完上面代碼能看出問題所在的話可以不用往下面看了
知識要點
要點一
ajax請求中的 contentType: ‘application/json;charset=utf-8’ 如果不加的話,會報如下錯誤:
.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]
表達意思也很清晰,默認的請求參數(shù)類型是: application/x-www-form-urlencoded;charset=UTF-8,而現(xiàn)在的代碼不支持這種類型的參數(shù)請求。
要點二
聚焦 @RequestBody 這個注解。
@RequestBody 注解常用來處理 content-type 不是默認的 application/x-www-form-urlencoded 編碼的內(nèi)容,比如說:application/json 或者是 application/xml 等。
這就是為什么代碼不支持 application/x-www-form-urlencoded 的原因。
解決辦法
將 controller 中的 @RequestBody 去掉,將 JS 中的 contentType: ‘application/json;charset=utf-8’ 去掉,就能正常接收參數(shù)了
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MyBatis-Plus 與Druid 數(shù)據(jù)源操作
SpringBoot框架集成MyBatis-Plus和Druid數(shù)據(jù)源,簡化了數(shù)據(jù)操作與監(jiān)控,MyBatis-Plus作為MyBatis的增強工具,自動實現(xiàn)CRUD操作,減少手寫SQL,提供分頁、邏輯刪除等功能,本文介紹MyBatis-Plus & Druid 數(shù)據(jù)源總結(jié),感興趣的朋友一起看看吧2024-09-09
解決IDEA報錯Caused by: org.springframework.boot.web.se
遇到IDEA啟動報錯,可嘗試以下方法:打開項目設置(Ctrl+Shift+Alt+S),將JDK版本修改為1.8;或者檢查TomCat依賴,若有問題可嘗試刪除,此外,確保每次拉取項目后,maven地址設置為本地,并且JDK版本設置為1.8,以上為個人解決經(jīng)驗,希望對大家有所幫助2024-09-09
Java程序去調(diào)用并執(zhí)行shell腳本及問題總結(jié)(推薦)
這篇文章主要介紹了Java程序去調(diào)用并執(zhí)行shell腳本及問題總結(jié),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
SpringBoot2.7?WebSecurityConfigurerAdapter類過期配置
這篇文章主要為大家介紹了SpringBoot2.7中WebSecurityConfigurerAdapter類過期應該如何配置,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06
淺談@RequestParam 參數(shù)是否必須傳的問題
這篇文章主要介紹了淺談@RequestParam 參數(shù)是否必須傳的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02

