博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring @RequestParam, @RequestBody Map注入注意事项
阅读量:6705 次
发布时间:2019-06-25

本文共 1590 字,大约阅读时间需要 5 分钟。

hot3.png

该博客内容不仅限于对map的注意项,对其他pojo一样有效。map只是给示例而已。

 

1、@RequestBody

1.1 一个参数时

@RequestMapping(value="/test3",method=RequestMethod.POST)public boolean test3(@RequestBody Map
fieldValueList) { System.out.println(JSON.toJSONString(fieldValueList)); return true;}

测试方式:

174549_nDb5_182501.png

1.2 多个参数时

@RequestMapping(value="/test4",method=RequestMethod.POST)public boolean test4(@RequestParam("key") String key,@RequestBody Map
fieldValueList) { System.out.println(key+":"+JSON.toJSONString(fieldValueList)); return true;}

测试方式:

175036_AyxI_182501.png

错误方式如下图所示,会抛出异常

“org.springframework.http.converter.HttpMessageNotReadableException”:

175214_4EeT_182501.png

 

总结:

  • @RequestBody需要把所有请求参数作为json解析,因此,不能包含key=value这样的写法在请求url中,所有的请求参数都是一个json
  • 直接通过浏览器输入url时,@RequestBody获取不到json对象,需要用java编程或者基于ajax的方法请求,将Content-Type设置为application/json

  

2、@RequestParam

2.1 一个参数时

@RequestMapping(value="/test",method=RequestMethod.POST)public boolean test(@RequestParam Map
fieldValueList) { System.out.println(JSON.toJSONString(fieldValueList)); return true;}

测试方式:

175933_7ShW_182501.png

得到结果为:{"aa":"bb","cc":"dd"}

错误方式:

180108_aZKJ_182501.png

得到结果:{"fieldValueList":"{\"aa\":\"bb\",\"cc\":\"dd\"}"},并不是我们想要的。

2.2 多个参数时

@RequestMapping(value="/test2",method=RequestMethod.POST)public boolean test2(@RequestParam("key") String key, @RequestParam Map
fieldValueList) { System.out.println(JSON.toJSONString(fieldValueList)); return true;}

错误方式:

180614_8SXH_182501.png

得到结果:{"key":"aa","aa":"bb","cc":"dd"},并不是我们想要的。多出了"key":"aa"。

 

180434_AiI9_182501.png

得到结果:{"fieldValueList":"{\"aa\":\"bb\",\"cc\":\"dd\"}","key":"aa"},并不是我们想要的。

 

总结:

  • @RequestParam参数中包含Map时,不要再写其他参数了,否则,map都会包含进去。

转载于:https://my.oschina.net/u/182501/blog/1532081

你可能感兴趣的文章
Warning: skipping non-radio button in group
查看>>
dotnet检测类型是否为泛型
查看>>
Android 悬浮窗权限校验
查看>>
使用CefSharp在.Net程序中嵌入Chrome浏览器(九)——性能问题
查看>>
mysql 创建数据库 并设置utf8格式
查看>>
IDA 逆向工程 反汇编使用
查看>>
CentOS7单独安装Apache Bench压力测试工具
查看>>
python植入后门backdoor程序的方法?
查看>>
WPF 使用 Direct2D1 画图 绘制基本图形
查看>>
导入其他python文件或者python文件的函数
查看>>
80端口被NT kernel & System 占用pid 4
查看>>
ThreadPoolExecutor的corePoolSize和maximumPoolSize
查看>>
Multiverse in Doctor Strange // Multiverse在《神秘博士》
查看>>
30天敏捷结果(22):设计你的一天
查看>>
ASP.NET MVC(Razor)上运用UEditor和xhEditor编辑器检测到有潜在危险的 Request.Form的真正解决办法...
查看>>
6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
查看>>
『原创』用C++开发WM应用系列(1)——"Hello World" Pro!(上)
查看>>
Windows Phone 7书托
查看>>
tasklist、taskkill、taskmgr
查看>>
【T08】避免重新编写TCP
查看>>