zoukankan      html  css  js  c++  java
  • SpringMVC接收多参数的处理方法

    • 问题:依赖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对象中的属性一一对应,否则会出现解析异常的问题。

  • 相关阅读:
    S02_CH09_UART串口中断实验
    S02_CH08_ ZYNQ 定时器中断实验
    S02_CH07_ ZYNQ PL中断请求
    S02_CH06_XADC实验
    S02_CH05_UBOOT实验Enter a post title
    S02_CH04_User_IP实验Enter a post title
    S02_CH03_EMIO实验Enter a post title
    S02_CH02_MIO实验Enter a post title
    S02_CH01_Hello World实验
    bzoj4868 [Shoi2017]期末考试
  • 原文地址:https://www.cnblogs.com/soundofcolors/p/11086961.html
Copyright © 2011-2022 走看看