1. 程式人生 > >Form表單傳遞多個值傳遞List陣列物件的解決方法之一

Form表單傳遞多個值傳遞List陣列物件的解決方法之一

一開始想的是用  

$("#inputForm").serializeArray()  序列化生成物件 

後端   @RequestBody List<PositionType> positionTypeList  獲取到資料 ,

有些小夥伴估計已經發現了,就是id 和Sort是兩個物件了。導致後臺獲取到的物件也是24個 

這該怎麼辦呢? jquery serializeobject(); 想著用這個序列化成物件會不會好使。 結果裡面的原理卻是把所有input物件都寫入一個物件中去了

現在公佈最後的解決思路:

(1)第一步先序列化物件

var positionArray = $("#inputForm").serializeArray();

(2)寫個js物件模板

function positionTypeTemplate(id,positionTypeSort){
    var positionType = new Object();
    positionType.id = id;
    positionType.positionTypeSort = positionTypeSort;
    return positionType;
}

(3)  宣告個數組用來接收我們自己生成的物件,serializeArray  生成的物件屬性是  name  value  鍵值對的形式的,通過name屬性值進行判斷是否該生成一個物件。

var positionTypeList = new Array();
var params;
for(var i = 0 ; i < positionArray.length ; i ++ ){
    if(positionArray[i].name == "id"){
                       positionTypeList.push(positionTypeTemplate(positionArray[i].value,params));
   }
   params = positionArray[i].value;
}
這樣傳回來的集合物件就是我們想要的了

(4) 通過  @RequestBody List<PositionType> positionTypeList  可以將請求體中的JSON字串繫結到相應的bean中上

當然也可以分別繫結到對應的字串上,  需要特別注意的是 JSON 字串中的key 必須對應user中屬性名,否則請求是過不去的