前端使用ajax发送数据,springboot后台接收,批量保存实体类

前端使用ajax发送数据,springboot后台接收,批量保存实体类
前端:
    window.sessionStorage是session缓存数据对象,这个可以替换成任何jquery对象{key,value}。
   

/**
* sessionStorage中获取 提交数据 封装的最终格式为:[{{key,value},...},{{key,value},...},{{key,value},...},...](其中key最终要封装成实体类的属性名)
* 思想:
* 0、因在sessionStorage中获取的对象格式为[{“0”“{{key,value},...}”},...],这是为了 前端编辑数据删除数据方便从而封装的对象类型,与最终要提交的数据对象不同
* 1、将jquery对象中所有的key循环取出
* 2、根据key循环取出value,并封装成一个{{key,value},...}形式的对象
* 3、将对象添加进数组中
*/
fromSessionStorageData: function () {
var submitData = [];//定义一个新数组 用于返回 所有的 待提交数据 集合,最后集合效果[{{key,value},...},{{key,value},...},{{key,value},...},...]
var sessionKeys = Object.keys(window.sessionStorage);//jquery对象中获取所有的key,将所有的key添加到数组中,
//第一次循环所有的value,是直接使用forint i=0;i<sessionKeys.length;i++)循环获取的,但是这样的key必须是连续的,
//比如我添加了三条数据,key分别为:012,我又删掉了key1的数据,那么在循环时就报错找不到对象中的属性sessionValue.typeName,
for (var key = 0; key < sessionKeys.length; key++) {
var sessionValue = JSON.parse(window.sessionStorage.getItem(sessionKeys[key]));
var data = {
"typeName": sessionValue.typeName,
"functionTypeId": sessionValue.functionTypeId,
"declarationFillId": sessionValue.declarationFillId,
"declarationTemplateId": sessionValue.declarationTemplateId,
"declarationExampleId": sessionValue.declarationExampleId
}
submitData.push(data);
}
return submitData;
}

 

/**
* 提交
*/
$(document).on("click", '[data-action="submit"]', function () {
var $this = $(this);
var url = $this.data("submitUrl");//获取提交的路径
var submitData = self.fromSessionStorageData();//获取待提交数据
$.ajax({
url: url,
type: "POST",
dataType: 'JSON',
data: JSON.stringify(submitData),//序列化数据
contentType: 'application/json',//提交的数据类型
loading: true,
success: function (res) {//成功之后执行的回调函数,res是成功后返回的数据对象
if (res.success) {
window.top.layer.msg(res.msg);
window.location.href = "/public/register/success";
} else {
window.top.layer.msg(res.msg);
window.location.href = "/public/register";
}
}
})
});

       
    controller中:

/**
* 注册 功能选择 提交
*
* @param registerFunctions 选择的功能 集合
* @param session
* @return
*/
@ResponseBody
@PostMapping(value = "/public/register/submit")
public JsonResult submitRegisterFunction(@RequestBody List<RegisterFunction> registerFunctions, HttpSession session) {
Object registerContactsId = session.getAttribute("contactsId");//从session中验证是否存在contactsId
if (registerContactsId != null) {
for (RegisterFunction registerFunction : registerFunctions) {//循环保存数据
registerFunction.setRegisterContactsId((Integer) registerContactsId);
registerFunctionService.save(registerFunction);
}
session.removeAttribute("contactsId");
return JsonResult.success();
}
return JsonResult.result(false, "session失效,请重新填写联系人信息!");
}


    

posted @ 2021-07-16 13:42  一个勺子java  阅读(849)  评论(0)    收藏  举报