整理 前端向后端传输对象(对象中包含另一个对象数组)
来源:互联网 发布:淘宝达人官网 编辑:程序博客网 时间:2024/06/10 19:21
对象定义
用户对象定义
@Entity@Datapublic class UserTestForm { @Id @GeneratedValue(generator = "uuid") @GenericGenerator(name = "uuid",strategy = "com.example.springdbtest.util.Base58UuidGenerator") public String id ; //用户名 public String userName; //年龄 public String age; //教育经历 @OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY) public List<Education> education;}
教育经历对象定义
@Entity@Datapublic class Education { @Id @GeneratedValue(generator = "uuid") @GenericGenerator(name = "uuid",strategy = "com.example.springdbtest.util.Base58UuidGenerator") public String id ; //入学时间 public String admissionDate; //毕业院校 public String graduateFrom; //毕业时间 public String graduateDate;}
form表单提交
前端页面代码
<form action="/addUser" method="post"> 姓名:<input type="text" name="userName" value="lisa" /><br/> 年龄:<input type="text" name="age" value="12" /><br/><br/> 入学时间:<input type="text" name="education[0].admissionDate" value="2013-09-01" /><br/> 毕业院校:<input type="text" name="education[0].graduateFrom" value="北京大学" /><br/> 毕业时间:<input type="text" name="education[0].graduateDate" value="2017-06-01" /><br/><br/> 入学时间:<input type="text" name="education[1].admissionDate" value="2010-09-01" /><br/> 毕业院校:<input type="text" name="education[1].graduateFrom" value="清华大学" /><br/> 毕业时间:<input type="text" name="education[1].graduateDate" value="2013-06-01" /><br/><br/> <input type="submit" value="提交" /></form>
后端数据代码
@PostMapping("/addUser") @ResponseBody public UserTestForm addUserForm(UserTestForm user){ log.info(user); return user; }
*注: 这里不可以用@RequestBody 注解
后端拿到的数据转为json格式
{ "id": null, "userName": "lisa", "age": "12", "education": [ { "id": null, "admissionDate": "2013-09-01", "graduateFrom": "北京大学", "graduateDate": "2017-06-01" }, { "id": null, "admissionDate": "2010-09-01", "graduateFrom": "清华大学", "graduateDate": "2013-06-01" } ]}
ajax提交
前端页面代码
<form> 姓名:<input type="text" name="userName" value="lisa" /><br/> 年龄:<input type="text" name="age" value="12" /><br/><br/> 入学时间:<input type="text" name="admissionDate1" id="a1" value="2013-09-01" /><br/> 毕业院校:<input type="text" name="graduateFrom1" id="a2" value="北京大学" /><br/> 毕业时间:<input type="text" name="graduateDate1" id="a3" value="2017-06-01" /><br/><br/> 入学时间:<input type="text" name="admissionDate2" id="b1" value="2010-09-01" /><br/> 毕业院校:<input type="text" name="graduateFrom2" id="b2" value="清华大学" /><br/> 毕业时间:<input type="text" name="graduateDate2" id="b3" value="2013-06-01" /><br/><br/> <input type="button" id="button" value="提交" /></form><script type="text/javascript"> $("#button").click(function(){ userName = $("[name='userName']").val(); age = $("[name='age']").val(); a1 = $("#a1").val(); a2 = $("#a2").val(); a3 = $("#a3").val(); b1 = $("#b1").val(); b2 = $("#b2").val(); b3 = $("#b3").val(); var user = {"userName":userName,"age":age,"education[0].admissionDate":a1,"education[0].graduateFrom":a2,"education[0].graduateDate":a3,"education[1].admissionDate":b1,"education[1].graduateFrom":b2,"education[1].graduateDate":b3}; console.log(user); education = [] edu = {} edu.admissionDate = a1; edu.graduateFrom = a2; edu.graduateDate = a3; edu2 = {} edu2.admissionDate = b1; edu2.graduateFrom = b2; edu2.graduateDate = b3; education[0] = edu; education[1] = edu2; var user1 = {}; user1.userName = userName; user1.age = age; user1.education = education; console.log(user1); var user2 = JSON.stringify(user1); console.log(user2); $.ajax({ url:"/addUser", type:"POST", data:user2, contentType:"application/json", success:function(data){ console.log(data); } }); })</script>
后端代码
@PostMapping("/addUser") @ResponseBody public UserTestForm addUserForm(@RequestBody UserTestForm user){ log.info(user); return user; }
*说明 :
- 由于是Ajax提交 form表单中的命名不需要 education[1].graduateFrom
形式,甚至表单中所有name的名字都可不与后端对象对应,只要在Ajax中定义时与后端对应即可,但为了识别/操作/可读方面考虑不推荐
- 当后端不使用@RequestBody
注解时,前端ajax请求中data:user
,此时不需要指定contentType.
此时前端传到后端的是一个user对象
{ userName: "lisa", age: "12", education[0].admissionDate: "2013-09-01", education[0].graduateFrom: "北京大学", education[0].graduateDate: "2017-06-01", education[1].admissionDate: "2010-09-01", education[1].graduateDate: "2013-06-01", education[1].graduateFrom: "清华大学"}
- 当后端使用
@RequestBody
注解时,前端ajax请求中的data:user2
,此时需指定contentType:"applicaiton/json"
此时前端传后端的是一个json字符串
{ "userName": "lisa", "age": "12", "education": [ { "admissionDate": "2013-09-01", "graduateFrom": "北京大学", "graduateDate": "2017-06-01" }, { "admissionDate": "2010-09-01", "graduateFrom": "清华大学", "graduateDate": "2013-06-01" } ]}
两种方式传到后端,后端接到的数据与form表单的效果一致。
阅读全文
0 0
- 整理 前端向后端传输对象(对象中包含另一个对象数组)
- flex ArrayCollection 存储的对象中包含另一个对象
- jquery ajax 向后端传递数组对象的问题
- js 声明数组和向数组中添加对象变量 [前端学习 第七节]
- 判断数组中是否包含某个对象
- Ajax传输对象给后端--SpringMVC
- 数组和面向对象
- 判断数组对象中是否包含某个对象
- 一个数组中包含对象,对象中包含数组取值
- 深拷贝实例(一个类中包含另一个类的对象)
- JavaScript判断对象数组是否包含对象
- 对象为空&&数组包含
- ajax异步加载解析复杂json(集合中包含对象,对象中包含对象)数据
- 数组和面向对象(封装)
- 二维数组和面向对象
- js 声明数组和向数组中添加对象变量
- js 声明数组和向数组中添加对象变量
- ajax传对象或者数组到后端
- php获取ip的方法
- Echarts绘制中国地图
- IPv6 源地址选择规则
- vue中使用轮播图 vue-awesome-swiper
- [MyBatis]诡异的Invalid bound statement (not found)错误
- 整理 前端向后端传输对象(对象中包含另一个对象数组)
- 4、join与中断线程
- 合理精简配置和设备的重要性
- 使用template.js处理数据
- Rancher创始人谈Docker,创新愈发困难,未来将何去何从?
- Spark2.2-Task序列化源码解析
- 神树桌面发布之后
- Android之Banner实现无限自动轮播图
- JAVA学习图谱