文档章节

spring @RequestParam, @RequestBody Map注入注意事项

xixingzhe
 xixingzhe
发布于 2017/09/08 17:52
字数 380
阅读 2177
收藏 1

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

 

1、@RequestBody

1.1 一个参数时

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

测试方式:

1.2 多个参数时

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

测试方式:

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

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

 

总结:

  • @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<String, String> fieldValueList) {
	System.out.println(JSON.toJSONString(fieldValueList));
	return true;
}

测试方式:

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

错误方式:

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

2.2 多个参数时

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

错误方式:

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

 

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

 

总结:

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

© 著作权归作者所有

共有 人打赏支持
xixingzhe
粉丝 2
博文 175
码字总数 46744
作品 0
西城
程序员
私信 提问
Spring框架 - Web框架 实现Controller

实现Controller 实现基本的Controller并处理输入输出 基本的Controller 添加了Controller Annotation声明该类是Controller 也添加RequestMapping,通过value制定的的路径 我们在函数处理之前...

抢小孩糖吃
2016/10/28
47
0
Ajax和SpringMVC之间JSON交互

Ajax和SpringMVC之间的json数据传输有两种方式: 1.直接传输Json对象 2.将Json序列化 1.直接传输Json对象 前端Ajax 后端使用 后端

努力学习ding
06/03
0
0
【spring】——常用注解介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fjj15732621696/article/details/80643952 组件类注解 在spring注入bean的时候常用的一种方式就是通过注解,装...

DD_Davina
06/10
0
0
求解:关于spring的@RequestParam与@RequestBody参数绑定的问题

在使用springMVC过程中,遇到参数绑定的问题,望各位帮忙指定一下 1) 使用@RequestParam方式绑定参数,除了能绑定String类型的参数外,可否绑定数组类型的参数以及Date类型的参数? 2) 使用@...

mrZhan_223
2014/09/01
13.2K
8
Spring4.1.6 常用注解

常用的spring注解有如下几种: @Controller @Service @Autowired @RequestMapping @RequestParam @ModelAttribute @Cacheable @CacheFlush @Resource @PostConstruct @PreDestroy @Repositor......

大糊涂
2015/06/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

程序员,你焦虑吗?

前言 我很焦虑,请问程序员们,你焦虑吗? 我是一名年过35的北漂程序员,我身边的朋友大多也是程序员。我总感觉到30岁以上的程序员充满了焦虑。“华为清退35岁以上老员工”、“中兴程序员坠楼...

Ala6
7分钟前
1
0
RabbitMQ+PHP 教程一(Hello World)用yii2测试通过

介绍 RabbitMQ是一个消息代理器:它接受和转发消息。你可以把它当作一个邮局:当你把邮件放在信箱里时,你可以肯定邮差先生最终会把邮件送到你的收件人那里。在这个比喻中,RabbitMQ就是这里...

hansonwong
13分钟前
0
0
Netty原理分析往这边看!

Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动...

Java干货分享
17分钟前
1
0
在Scala中构建Web API的4大框架

Scala是一种强大的语言,很快就成为许多开发人员的最爱。然而,语言只是一个起点-并非每个函数都将由语言核心覆盖。Scala还创建了一些厉害的框架。接下来看看Scala的4个强大框架以及其优点和...

数据星河
20分钟前
0
0
天猫双 11 背后:409 亿次安全保护,全链路保障每个购物场景

2135 亿元!2018 天猫双 11 再次刷新纪录。 这一数字背后,为了让用户更畅快买买买,一个简单的点击下单过程,就有百余项阿里安全技术在保驾护航:全天拦截 16 亿次恶意攻击、保护 409 亿次用...

Mr_zebra
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部