快速解決SpringMVC @RequestBody 用map接收請(qǐng)求參數(shù)的問(wèn)題
一:遇到個(gè)跨域調(diào)用,因?yàn)閭鱾€(gè)我的參數(shù)不定,所以需要通過(guò)map來(lái)接收參數(shù)并進(jìn)行簽名驗(yàn)證等操作
理所當(dāng)然的寫出了下面的代碼,但是發(fā)現(xiàn)map里并沒(méi)有獲取到傳來(lái)的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ì)象,而不是我想象中的簡(jiǎn)單的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)試代碼都沒(méi)有成功,后來(lái)發(fā)現(xiàn),其實(shí) @RequestBody接收的是一個(gè)Json對(duì)象的字符串,而不是一個(gè)Json對(duì)象。然而在ajax請(qǐng)求往往傳的都是Json對(duì)象,后來(lái)發(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ù)的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 解讀@RequestBody的正確使用方法
- 詳解SpringMVC @RequestBody接收J(rèn)son對(duì)象字符串
- @ResponseBody 和 @RequestBody 注解的區(qū)別
- SpringMVC restful 注解之@RequestBody進(jìn)行json與object轉(zhuǎn)換
- springmvc @RequestBody String類型參數(shù)的使用
- 關(guān)于Springboot | @RequestBody 接收到的參數(shù)對(duì)象屬性為空的問(wèn)題
- Springboot攔截器如何獲取@RequestBody參數(shù)
- 親測(cè)SpringBoot參數(shù)傳遞及@RequestBody注解---踩過(guò)的坑及解決
- springMvc注解之@ResponseBody和@RequestBody詳解
- SpringBoot中@RequestBody的偽表單提交場(chǎng)景
相關(guān)文章
IDEA 顯示Run Dashboard窗口的2種方式(推薦)
這篇文章主要介紹了IDEA 顯示Run Dashboard窗口的2種方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
java中用float時(shí),數(shù)字后面加f,這樣是為什么你知道嗎
這篇文章主要介紹了java用float時(shí),數(shù)字后面加f,這樣是為什么你知道嗎?具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
解決子線程中獲取不到HttpServletRequest對(duì)象的問(wèn)題
這篇文章主要介紹了解決子線程中獲取不到HttpServletRequest對(duì)象的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
java并發(fā)學(xué)習(xí)-CountDownLatch實(shí)現(xiàn)原理全面講解
這篇文章主要介紹了java并發(fā)學(xué)習(xí)-CountDownLatch實(shí)現(xiàn)原理全面講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02
redis與ssm整合方法(mybatis二級(jí)緩存)
本文給大家介紹redis與ssm整合方法(mybatis二級(jí)緩存)。主要是利用redis去做mybatis的二級(jí)緩存,mybaits映射文件中所有的select都會(huì)刷新已有緩存,如果不存在就會(huì)新建緩存,所有的insert,update操作都會(huì)更新緩存2017-12-12
mybatis動(dòng)態(tài)sql之新增與更新方式
這篇文章主要介紹了mybatis動(dòng)態(tài)sql之新增與更新方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07

