Form表單傳遞多個值傳遞List陣列物件的解決方法之一
阿新 • • 發佈:2018-11-14
一開始想的是用
$("#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中屬性名,否則請求是過不去的