• 问题:依赖SpringMVC自带的机制解析多对象参数往往出现解析不了的问题,使用较为复杂。

  • 解决思路:前端 JS 先把传递到后台的对象转换为 JSON 字符串,后台直接使用字符串类型接收,再使用 stringify 方法将 JSON 字符串解析成对应的Java对象。

  • 具体步骤

    1. 前端定义一个空对象

      var obj = new Object();
    2. 将需要传递的参数存入定义的空对象中,传递的参数分为以下几种情况

      1. 前端有多个简单同类型的参数:将这些参数整合到 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);
      2. 前端如果是多个简单但不同类型的参数:将这些参数设置到上面定义的空对象的属性中即可。

        //参数中既有String类型,又有Int类型
        var d1 = 'a';
        var d2 = 1;
        obj['d1'] = d1;
        obj['d2'] = d2;
      3. 前端如果是多个同类型的对象参数:先将这些对象添加到 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);
      4. 前端如果是多个不同类型的对象参数:先将这些对象分别使用 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);
    3. 使用ajax上传定义的obj对象。

    4. 后台接收:controller方法直接使用 String 类型参数接收即可。

    5. 字符串处理

      1. 如果传递的是一个对象,使用 JSON.parseObject(json_str, *.class) 将 JSON 字符串解析为Java对象。
      2. 传递的如果是一个数组,使用 JSONArray.parseArray(json_str, *.class) 将 JSON 字符串解析为包含 Java 对象的 List 集合。
  • 可能出现的问题:JSON字符串解析成Java对象的时候,注意 JSON 字符串中的属性应该与Java对象中的属性一一对应,否则会出现解析异常的问题。

SpringMVC接收多参数的处理方法的更多相关文章

  1. springMVC 接收数组参数,mybatis 接收数组参数,mybatis批量插入/批量删除案例

    案例是给一个用户赋予多个权限,多个权限用其对应的主键 id 为参数,组成了 一个id数组,传给springMVC,然后springMVC传给mybatis,然后mybatis批量插入.其实类似的场景还 ...

  2. Springmvc接收数组参数

    Springmvc接收数组参数,必须添加@RequestParam注解 注解格式@RequestParam(value="前端参数名[]") 示例: controller端的代码 ...

  3. SpringMVC——接收请求参数和页面传参

    Spring接收请求参数: 1.使用HttpServletRequest获取 @RequestMapping("/login.do") public String login(Ht ...

  4. SpringMVC接收请求参数和页面传参

    接收请求参数: 1,使用HttpServletRequest获取 @RequestMapping("/login.do") public String login(HttpServ ...

  5. ajax传数组到后台,后台springmvc接收数组参数

    var   ids= new Array();  $("input[class='detailCheck']:checked").each(function(i,k){   var ...

  6. springMVC接收请求参数的几种方式

    1.  用注解@RequestParam绑定请求参数 用注解@RequestParam绑定请求参数a到变量a,当请求参数a不存在时会有异常发生,可以通过设置属性required=false解决,例如: ...

  7. Spring-MVC接收request参数和向页面传值总结

    接收请求参数值,三种方式: 1使用HttpServletRequest获取 2使用@RequestParam注解 3使用自动封装机制封装成bean对象 向页面传值 1直接使用HttpServletRe ...

  8. 【踩坑】springMVC 接收String参数没有判断为空

    今天在调试iReview项目的接口时,发现新增词条和新增库的时候,某些字段即使留空POST到后台时也能当做不为空. 经过排查,发现后台是使用 String 变量名 == null 这样的语句去判断变量 ...

  9. springmvc接收各种参数

    转载:https://blog.csdn.net/lutinghuan/article/details/46820023

随机推荐

  1. 多个client与一个server端通信的问题

    多个client与一个server端通信的问题 上篇博文主要是讲的关于client与server端的通信问题.在上篇博文中当我们仅仅有一个client訪问我们的server时是能够正常执行的,可是当我 ...

  2. 第一天,Robert和Sue大师培训给的启示

    程序猿的零点从他睡觉那一刻开始计时. 今天是周六,听到了Robert关于销售技巧的培训还有Sue关于微信零售业O2O电商的分析,一并加上昨天晚上直到11点的Leadership培训,这个周末真的是收获 ...

  3. 创建类模式大PK(总结)

    创建类模式包含工厂方法模式.建造者模式.抽象工厂模式.单例模式和原型模式,它们都可以提供对象的创建和管理职责.当中的单例模式和原型模式很easy理解,单例模式是要保持在内存中仅仅有一个对象,原型模式是 ...

  4. [DevExpress]设置列的时间格式

    方法一 设置DisplayFormatFormatString:gFormatType:DateTime 方法二

  5. 基本数据类型操作的补充和set的基本操作

    1,补充基本数据类型的知识点:    "  " .join(内容)...........什么加到什么里边,内容可以是:int,str,dic,tup. lst = ["周 ...

  6. 【codeforces379F】 New Year Tree

    距离一个点最远的点一定是直径的一个端点.考虑运用这个原理,每次维护一下直径端点即可. #include<algorithm> #include<iostream> #inclu ...

  7. YTU 2641: 填空题:静态成员---计算学生个数

    2641: 填空题:静态成员---计算学生个数 时间限制: 1 Sec  内存限制: 128 MB 提交: 267  解决: 206 题目描述 学生类声明已经给出,在主程序中根据输入信息输出实际建立的 ...

  8. URAL 1057 数位dp

    题目传送门http://acm.timus.ru/problem.aspx?space=1&num=1057 最近在学习数位dp,具体姿势可以参照这篇论文:http://wenku.baidu ...

  9. 【NOIP 2016】初赛-完善程序 & 参考答案

    参考答案 感觉这两题目都挺好的~~ T1 交朋友 简单描述:有n个人依次进入教室,每个人进入会找一个身高绝对值相差最小的人交朋友(相同时更想和高的交朋友),求每个人交的朋友. Solution: So ...

  10. 杂项-Java:Tomcat

    ylbtech-杂项-Java:Tomcat 1.返回顶部 1. Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目, ...