前端傳json數組參數,後臺以List接收

1 需求
將前端選擇的jqGrid多行記錄作爲參數傳遞至後臺,後臺通過dto封裝對應屬性,以List<DTO> 方式接收參數。

2 問題
直接將json數組傳遞給後臺,報415錯誤,說明前後臺參數類型不匹配。

3 解決
查閱資料後,發現是沒有設置contentType,修改後的代碼如下:

function addItems() {
	// 檢查是否選擇了數據
	var selectedItems = $("#tableId").jqGrid("selectCheckItems");
	if(!selectedItems.length) {
		messageBox({"message":"請先選擇數據", "type":"warn"});
		return false;
	}

	$.ajax({
		url: basePath + "/xxx/addItems",
		type: "POST",
		dataType: "json",
		data: JSON.stringify(selectedItems),
		contentType: "application/json"
	}).done(function (res, st, xhr) {
		if (res.code === 1) {
			$grid.jqGrid("query");
			messageBox({"message":"添加成功", "type":"success"});
		} else {
			messageBox({"message":"添加失敗", "type":"error"});
		}
	}).fail(function (error) {
		console.error(error.responseText);
		messageBox({"message":"添加失敗", "type": "error"});
	}).always(function () {
		// to do something
	});
}

後臺以List對象接收參數示例代碼如下:

@PostMapping(value = "/addItems")
@ResponseBody
public ResponseJson addItems(@RequestBody List<dto> dtos){
	// 業務判斷
	...
}

此時可以正常接收json數組參數。



發佈了130 篇原創文章 · 獲贊 42 · 訪問量 36萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章