SpringMVC接收多参数的处理方法
问题:依赖SpringMVC自带的机制解析多对象参数往往出现解析不了的问题,使用较为复杂。
解决思路:前端 JS 先把传递到后台的对象转换为 JSON 字符串,后台直接使用字符串类型接收,再使用 stringify 方法将 JSON 字符串解析成对应的Java对象。
具体步骤
前端定义一个空对象
var obj = new Object();
将需要传递的参数存入定义的空对象中,传递的参数分为以下几种情况
前端有多个简单同类型的参数:将这些参数整合到 Array 中,通过 JSON.stringify 方法转换成 JSON 字符串,存入到上面定义的空对象中。
//三个参数同属String类型
var d1 = 'a';
var d2 = 'b';
var d3 = 'c';
var simple_data = new Array();
simple_data.push(d1);
simple_data.push(d2);
simple_data.push(d3);
obj['simple_data'] = JSON.stringify(simple_data);
前端如果是多个简单但不同类型的参数:将这些参数设置到上面定义的空对象的属性中即可。
//参数中既有String类型,又有Int类型
var d1 = 'a';
var d2 = 1;
obj['d1'] = d1;
obj['d2'] = d2;
前端如果是多个同类型的对象参数:先将这些对象添加到 Array 中,再通过 JSON.stringify 方法转换成 JSON 字符串,存入到上面定义的空对象中。
//参数中的两个对象是同一类型的对象,具有相同的属性
var obj1 = new Object();
obj1['id'] = 1;
obj1['code'] = '233'; var obj2 = new Object();
obj2['id'] = 2;
obj2['code'] = '332'; var same_complex_data = new Array();
same_complex_data.push(obj1);
same_complex_data.push(obj2);
obj['same_complex_data'] = JSON.stringify(same_complex_data);
前端如果是多个不同类型的对象参数:先将这些对象分别使用 JSON.stringify 方法转换成 JSON 字符串,然后分别设置到上面定义的空对象的属性中。
//参数中的两个对象是不同类型的对象,具有不同的属性
var obj1 = new Object();
obj1['id'] = 1;
obj1['name'] = 'zhangsan'; var obj2 = new Object();
obj2['phone'] = '15666666666';
obj2['email'] = 'example@outlook.com'; obj['obj1'] = JSON.stringify(obj1);
obj['obj2'] = JSON.stringify(obj2);
使用ajax上传定义的obj对象。
后台接收:controller方法直接使用 String 类型参数接收即可。
字符串处理
- 如果传递的是一个对象,使用 JSON.parseObject(json_str, *.class) 将 JSON 字符串解析为Java对象。
- 传递的如果是一个数组,使用 JSONArray.parseArray(json_str, *.class) 将 JSON 字符串解析为包含 Java 对象的 List 集合。
可能出现的问题:JSON字符串解析成Java对象的时候,注意 JSON 字符串中的属性应该与Java对象中的属性一一对应,否则会出现解析异常的问题。
SpringMVC接收多参数的处理方法的更多相关文章
- springMVC 接收数组参数,mybatis 接收数组参数,mybatis批量插入/批量删除案例
案例是给一个用户赋予多个权限,多个权限用其对应的主键 id 为参数,组成了 一个id数组,传给springMVC,然后springMVC传给mybatis,然后mybatis批量插入.其实类似的场景还 ...
- Springmvc接收数组参数
Springmvc接收数组参数,必须添加@RequestParam注解 注解格式@RequestParam(value="前端参数名[]") 示例: controller端的代码 ...
- SpringMVC——接收请求参数和页面传参
Spring接收请求参数: 1.使用HttpServletRequest获取 @RequestMapping("/login.do") public String login(Ht ...
- SpringMVC接收请求参数和页面传参
接收请求参数: 1,使用HttpServletRequest获取 @RequestMapping("/login.do") public String login(HttpServ ...
- ajax传数组到后台,后台springmvc接收数组参数
var ids= new Array(); $("input[class='detailCheck']:checked").each(function(i,k){ var ...
- springMVC接收请求参数的几种方式
1. 用注解@RequestParam绑定请求参数 用注解@RequestParam绑定请求参数a到变量a,当请求参数a不存在时会有异常发生,可以通过设置属性required=false解决,例如: ...
- Spring-MVC接收request参数和向页面传值总结
接收请求参数值,三种方式: 1使用HttpServletRequest获取 2使用@RequestParam注解 3使用自动封装机制封装成bean对象 向页面传值 1直接使用HttpServletRe ...
- 【踩坑】springMVC 接收String参数没有判断为空
今天在调试iReview项目的接口时,发现新增词条和新增库的时候,某些字段即使留空POST到后台时也能当做不为空. 经过排查,发现后台是使用 String 变量名 == null 这样的语句去判断变量 ...
- springmvc接收各种参数
转载:https://blog.csdn.net/lutinghuan/article/details/46820023
随机推荐
- cocos2d-x2.2.5走四棋儿源代码“开源”
尊重开发人员的劳动成果.转载请注明From郝萌主 游戏简单介绍: 一款益智棋类游戏,通过两枚棋子对上敌方的一枚棋子便可击杀对方. 游戏界面精美简洁,游戏规则简单明了,AI聪明有趣. 人人对战,人机对战 ...
- list-style样式不显示问题
<li> display要使用 list-item ,不要使用block,要不然会造成不显示的问题.
- android 添加手机短信,获取手机短信,删除手机短信和修改手机短信
注意添加权限: <uses-permission android:name="android.permission.READ_SMS"></uses-permis ...
- 【BJOI 2018】 求和
[题目链接] 点击打开链接 [算法] 预处理i^k的前缀和,对于每次询问,树上倍增即可 时间复杂度 : O(nk + mlog(n)) [代码] #include<bits/stdc++.h&g ...
- WPF获取原始控件样式
要获取WPF控件的原始样式,需要我们安装Blend for Visual Studio. 然后,我们打开Blend for Visual Studio,创建一个WPF项目. 然后,我们向页面拖动一个B ...
- Python不兼容问题
今天遇到了一个Python2与3不兼容的坑. ride是基于robot框架的python自动化ui,但它只支持python2,而我电脑环境只有python3,想跑别人基于ride编写的测试用例,折腾了 ...
- 2-4 原生小程序 - 自带组件及API
获取用户的信息有两种,一种是不需要登录的,我们只需要获取用户的头像,还有微信的名.还有一种是登录的,就是登录后台校验的,就是获取用户的openid. webview,可以内嵌一个网页,类似于原生的开发 ...
- C++中虚析构函数的作用 (转载)
转自:http://blog.csdn.net/starlee/article/details/619827 我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数.可是,为什么要这样做 ...
- [Swift通天遁地]一、超级工具-(19)制作六种别具风格的动作表单
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- 视图解析器InternalResourceViewResolver在什么情况下需要配置?在什么情况下不需要配置?
如果路径名是逻辑名的话,必须配置 -------------- 相对路径,即逻辑名称如果路径名是真实名的话,可选配置 若是绝对路径,则不用配置,即真实名称 注:试一下逻辑名和真实名的例子*****有用 ...