赞
踩
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数组参数。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。