onlyForCloud 2019-01-06
在form的表单元素的name属性中,填写类似XXX[index].name的属性名,我这里采用的是thymeleaf模板框架构建的,其它前端可以做类似的修改。
<form class="form-horizontal m-t" id="signupForm"> <div class="form-group"> <label class="col-sm-3 control-label">项目编号:</label> <div class="col-sm-8"> <input id="projectNumber" name="projectNumber" th:value="${dict.projectNumber}" class="form-control" type="text"> </div> </div> <th:block th:unless="${#lists.isEmpty(dict.records)}"> <th:block th:each="r,stat : ${dict.records}"> <div class="form-group"> <label class="col-sm-3 control-label" th:text="收款时间+${stat.count}+:"></label> <div class="col-sm-8"> <input id="moneyTime" th:name="records[+${stat.index}+].moneyTime" th:value="${r.moneyTime}" class="form-control" type="text"> </div> </div> <div class="form-group"> <label class="col-sm-3 control-label" th:text="收款金额+${stat.count}+:"></label> <div class="col-sm-8"> <input id="sumMoney" th:name="records[+${stat.index}+].sumMoney" th:value="${r.sumMoney}" class="form-control" type="text"> </div> </div> </th:block> </th:block> <div class="form-group"> <div class="col-sm-8 col-sm-offset-3"> <button type="submit" class="btn btn-primary">提交</button> </div> </div> </form>
这样的表单,提交后,浏览器抓到的数据结构:
/** * 修改 */ @ResponseBody @RequestMapping("/update") public R update(SellContractVO records) { System.out.println(JSON.toJSONString(records)); // sellContractService.update(records); return R.ok(); }
controller打印出的结果
{ "projectNumber": "ZWI89", "records": [{ "moneyTime": "2019-01-03", "sumMoney": "239.0000" }, { "moneyTime": "2019-01-02", "sumMoney": "346.0000" }] }
public class SellContractVO implements Serializable { private static final long serialVersionUID = 3768978134789546577L; /** * 项目编号 */ private String projectNumber; /** * 收付款记录 */ private List<MoneyRecord> records; public String getProjectNumber() { return projectNumber; } public void setProjectNumber(String projectNumber) { this.projectNumber = projectNumber; } public List<MoneyRecord> getRecords() { return records; } public void setRecords(List<MoneyRecord> records) { this.records = records; } }
package com.bootdo.contract.vo; import java.io.Serializable; public class MoneyRecord implements Serializable { /** * */ private static final long serialVersionUID = 7671784309099657317L; /** * 主键id */ private Long id; /** * 收付款时间 */ private String moneyTime; /** * 收付款金额 */ private String sumMoney; public MoneyRecord() { super(); } public MoneyRecord(Long id, String moneyTime, String sumMoney) { super(); this.id = id; this.moneyTime = moneyTime; this.sumMoney = sumMoney; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getMoneyTime() { return moneyTime; } public void setMoneyTime(String moneyTime) { this.moneyTime = moneyTime; } public String getSumMoney() { return sumMoney; } public void setSumMoney(String sumMoney) { this.sumMoney = sumMoney; } }
参考链接:https://blog.csdn.net/lutinghuan/article/details/46820023