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對象中的屬性一一對應,否則會出現解析異常的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM