快速解決SpringMVC @RequestBody 用map接收請求參數(shù)的問題
一:遇到個跨域調(diào)用,因?yàn)閭鱾€我的參數(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有一個getParameterMap方法好像很牛逼的樣子
@RequestMapping(value = "/callback", produces = "text/html;charset=UTF-8")
@ResponseBody
public String callback(HttpServletRequest httpServletRequest) {
Map<String, String> params = httpServletRequest.getParameterMap();
return null;
}
然而這么寫還是不對,因?yàn)檫@個方法其實(shí)是返回的一個Map<String, String[]>對象,而不是我想象中的簡單的Map<String, String>類型,這里是可以獲得正確的參數(shù)的,但是需要手動進(jìn)行轉(zhuǎn)換,不可能是這種情況呀,一定有更好的解決辦法 “用@RequestParam試試”,然后就對了。。對了。。了。。
@RequestMapping(value = "/callback", produces = "text/html;charset=UTF-8")
@ResponseBody
public String callback(@RequestParam Map<String, String> params) {
return null;
}
二:以前,一直以為在SpringMVC環(huán)境中,@RequestBody接收的是一個Json對象,一直在調(diào)試代碼都沒有成功,后來發(fā)現(xiàn),其實(shí) @RequestBody接收的是一個Json對象的字符串,而不是一個Json對象。然而在ajax請求往往傳的都是Json對象,后來發(fā)現(xiàn)用 JSON.stringify(data)的方式就能將對象變成字符串。
同時ajax請求的時候也要指定dataType: "json",contentType:"application/json" 這樣就可以輕易的將一個對象或者List傳到Java端,使用@RequestBody即可綁定對象或者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接收請求參數(shù)的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- 解讀@RequestBody的正確使用方法
- 詳解SpringMVC @RequestBody接收J(rèn)son對象字符串
- @ResponseBody 和 @RequestBody 注解的區(qū)別
- SpringMVC restful 注解之@RequestBody進(jìn)行json與object轉(zhuǎn)換
- springmvc @RequestBody String類型參數(shù)的使用
- 關(guān)于Springboot | @RequestBody 接收到的參數(shù)對象屬性為空的問題
- Springboot攔截器如何獲取@RequestBody參數(shù)
- 親測SpringBoot參數(shù)傳遞及@RequestBody注解---踩過的坑及解決
- springMvc注解之@ResponseBody和@RequestBody詳解
- SpringBoot中@RequestBody的偽表單提交場景
相關(guān)文章
IDEA 顯示Run Dashboard窗口的2種方式(推薦)
這篇文章主要介紹了IDEA 顯示Run Dashboard窗口的2種方式,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
java中用float時,數(shù)字后面加f,這樣是為什么你知道嗎
這篇文章主要介紹了java用float時,數(shù)字后面加f,這樣是為什么你知道嗎?具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
解決子線程中獲取不到HttpServletRequest對象的問題
這篇文章主要介紹了解決子線程中獲取不到HttpServletRequest對象的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
java并發(fā)學(xué)習(xí)-CountDownLatch實(shí)現(xiàn)原理全面講解
這篇文章主要介紹了java并發(fā)學(xué)習(xí)-CountDownLatch實(shí)現(xiàn)原理全面講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02

