快速解決SpringMVC @RequestBody 用map接收請(qǐng)求參數(shù)的問題
一:遇到個(gè)跨域調(diào)用,因?yàn)閭鱾€(gè)我的參數(shù)不定,所以需要通過map來接收參數(shù)并進(jìn)行簽名驗(yàn)證等操作
理所當(dāng)然的寫出了下面的代碼,但是發(fā)現(xiàn)map里并沒有獲取到傳來的key-value值
@RequestMapping(value = "/callback", produces = "text/html;charset=UTF-8") @ResponseBody public String callback(@RequestBody Map<String, String> params) { return null; }
之后我發(fā)現(xiàn)HttpServletRequest有一個(gè)getParameterMap方法好像很牛逼的樣子
@RequestMapping(value = "/callback", produces = "text/html;charset=UTF-8") @ResponseBody public String callback(HttpServletRequest httpServletRequest) { Map<String, String> params = httpServletRequest.getParameterMap(); return null; }
然而這么寫還是不對(duì),因?yàn)檫@個(gè)方法其實(shí)是返回的一個(gè)Map<String, String[]>對(duì)象,而不是我想象中的簡單的Map<String, String>類型,這里是可以獲得正確的參數(shù)的,但是需要手動(dòng)進(jìn)行轉(zhuǎn)換,不可能是這種情況呀,一定有更好的解決辦法 “用@RequestParam試試”,然后就對(duì)了。。對(duì)了。。了。。
@RequestMapping(value = "/callback", produces = "text/html;charset=UTF-8") @ResponseBody public String callback(@RequestParam Map<String, String> params) { return null; }
二:以前,一直以為在SpringMVC環(huán)境中,@RequestBody接收的是一個(gè)Json對(duì)象,一直在調(diào)試代碼都沒有成功,后來發(fā)現(xiàn),其實(shí) @RequestBody接收的是一個(gè)Json對(duì)象的字符串,而不是一個(gè)Json對(duì)象。然而在ajax請(qǐng)求往往傳的都是Json對(duì)象,后來發(fā)現(xiàn)用 JSON.stringify(data)的方式就能將對(duì)象變成字符串。
同時(shí)ajax請(qǐng)求的時(shí)候也要指定dataType: "json",contentType:"application/json" 這樣就可以輕易的將一個(gè)對(duì)象或者List傳到Java端,使用@RequestBody即可綁定對(duì)象或者List.
JavaScript 代碼:
<script type="text/javascript"> $(document).ready(function(){ var saveDataAry=[]; var data1={"userName":"test","address":"gz"}; var data2={"userName":"ququ","address":"gr"}; saveDataAry.push(data1); saveDataAry.push(data2); $.ajax({ type:"POST", url:"user/saveUser", dataType:"json", contentType:"application/json", data:JSON.stringify(saveData), success:function(data){ } }); }); </script>
Java代碼
@RequestMapping(value = "saveUser", method = {RequestMethod.POST }}) @ResponseBody public void saveUser(@RequestBody List<User> users) { userService.batchSave(users); }
以上這篇快速解決SpringMVC @RequestBody 用map接收請(qǐng)求參數(shù)的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java 中createStatement()方法的實(shí)例詳解
這篇文章主要介紹了java 中createStatement()方法的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06詳解SpringBoot?統(tǒng)一后端返回格式的方法
今天我們來聊一聊在基于SpringBoot前后端分離開發(fā)模式下,如何友好的返回統(tǒng)一的標(biāo)準(zhǔn)格式以及如何優(yōu)雅的處理全局異常,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2022-05-05Java 添加、刪除、替換、格式化Word中的文本的步驟詳解(基于Spire.Cloud.SDK for Java)
這篇文章主要介紹了Java 添加、刪除、替換、格式化Word中的文本(基于Spire.Cloud.SDK for Java),本文分步驟通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08SpringBoot學(xué)習(xí)篇之@Valid與@Validated的區(qū)別
@Valid是使用Hibernate?validation的時(shí)候使用,@Validated是只用Spring?Validator校驗(yàn)機(jī)制使用,下面這篇文章主要給大家介紹了關(guān)于SpringBoot學(xué)習(xí)篇之@Valid與@Validated區(qū)別的相關(guān)資料,需要的朋友可以參考下2022-11-11SpringBoot利用filter實(shí)現(xiàn)xss防御功能
Cross-Site?Scripting(跨站腳本攻擊)簡稱?XSS,是一種代碼注入攻擊,攻擊者通過在目標(biāo)網(wǎng)站上注入惡意腳本,使之在用戶的瀏覽器上運(yùn)行,利用這些惡意腳本,攻擊者可獲取用戶的敏感信息,本文給大家介紹了SpringBoot利用filter實(shí)現(xiàn)xss防御功能,需要的朋友可以參考下2024-09-09Java使用ES?Client?調(diào)用滾動(dòng)查詢及Elasticsearch滾動(dòng)查詢Scrolling機(jī)制
Elasticsearch提供了一種稱為"滾動(dòng)查詢"(Scrolling)的機(jī)制,用于處理大型數(shù)據(jù)集的分頁查詢,這篇文章給大家介紹滾動(dòng)查詢的一般步驟及Java使用ESClient調(diào)用滾動(dòng)查詢的方法,感興趣的朋友一起看看吧2023-08-08Java如何利用狀態(tài)模式(state pattern)替代if else
這篇文章主要給大家介紹了關(guān)于Java如何利用狀態(tài)模式(state pattern)替代if else的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11