第一種方式:
javabean:

1 public class BusLoanInfoShop {
2 private Integer id;
3 private Integer bid;
4 private String shopName;
5 private String platformName;
6 private String shopLevel;
7 private String operatingPeriod;
8 private String shopOwner;
9 private String subAccount;
10 private String sbuPassword;
11 private String businessOpera;
12 private String businessAddress;
13 private String warehouseAddress;
14 private String salesIncome;
15 private String totalLiability;
16 private String bankLiabilities;
17 private String netProfit;
18
19 public Integer getId() {
20 return id;
21 }
22 public void setId(Integer id) {
23 this.id = id;
24 }
25 public Integer getBid() {
26 return bid;
27 }
28 public void setBid(Integer bid) {
29 this.bid = bid;
30 }
31 public String getShopName(){
32 return this.shopName;
33 }
34 public void setShopName(String shopName){
35 this.shopName=shopName;
36 }
37 public String getPlatformName(){
38 return this.platformName;
39 }
40 public void setPlatformName(String platformName){
41 this.platformName=platformName;
42 }
43 public String getShopLevel(){
44 return this.shopLevel;
45 }
46 public void setShopLevel(String shopLevel){
47 this.shopLevel=shopLevel;
48 }
49 public String getOperatingPeriod(){
50 return this.operatingPeriod;
51 }
52 public void setOperatingPeriod(String operatingPeriod){
53 this.operatingPeriod=operatingPeriod;
54 }
55 public String getShopOwner(){
56 return this.shopOwner;
57 }
58 public void setShopOwner(String shopOwner){
59 this.shopOwner=shopOwner;
60 }
61 public String getSubAccount(){
62 return this.subAccount;
63 }
64 public void setSubAccount(String subAccount){
65 this.subAccount=subAccount;
66 }
67 public String getSbuPassword(){
68 return this.sbuPassword;
69 }
70 public void setSbuPassword(String sbuPassword){
71 this.sbuPassword=sbuPassword;
72 }
73 public String getBusinessOpera(){
74 return this.businessOpera;
75 }
76 public void setBusinessOpera(String businessOpera){
77 this.businessOpera=businessOpera;
78 }
79 public String getBusinessAddress(){
80 return this.businessAddress;
81 }
82 public void setBusinessAddress(String businessAddress){
83 this.businessAddress=businessAddress;
84 }
85 public String getWarehouseAddress(){
86 return this.warehouseAddress;
87 }
88 public void setWarehouseAddress(String warehouseAddress){
89 this.warehouseAddress=warehouseAddress;
90 }
91 public String getSalesIncome(){
92 return this.salesIncome;
93 }
94 public void setSalesIncome(String salesIncome){
95 this.salesIncome=salesIncome;
96 }
97 public String getTotalLiability(){
98 return this.totalLiability;
99 }
100 public void setTotalLiability(String totalLiability){
101 this.totalLiability=totalLiability;
102 }
103 public String getBankLiabilities(){
104 return this.bankLiabilities;
105 }
106 public void setBankLiabilities(String bankLiabilities){
107 this.bankLiabilities=bankLiabilities;
108 }
109 public String getNetProfit(){
110 return this.netProfit;
111 }
112 public void setNetProfit(String netProfit){
113 this.netProfit=netProfit;
114 }
115
116 }
javabean
ListForm:

1 public class ShopListForm {
2 private List<BusLoanInfoShop> shop;
3
4 public List<BusLoanInfoShop> getShop() {
5 return shop;
6 }
7
8 public void setShop(List<BusLoanInfoShop> shop) {
9 this.shop = shop;
10 }
11
12
13
14 }
ListForm
spring Mvc控制器入口:

1 @RequestMapping("/save")
2 public void save(ShopListForm shopForm,HttpServletResponse response) throws Exception{
3 for(BusLoanInfoShop shop:shopForm.getShop()){
4 System.out.println("shop.name="+shop.getShopName());
5 }
6
7 }
spring mvc訪問入口
html代碼:

1 <div id="optionContainer" class="ftitle">經驗實體信息(必填,多個網商店鋪需加行)</div> 2 <div class="fitem"> 3 <table id="tblShopData"> 4 <tr> 5 <td>網店名稱</td> 6 <td>電商平台名稱</td> 7 <td>網店級別(僅限淘寶及天貓商戶)</td> 8 <td>網店持續經營年限</td> 9 <td>網店實際所有者(個人名稱或公司名稱)</td> 10 <td>子帳號</td> 11 <td>密碼</td> 12 <td>主要產品、品牌</td> 13 <td>經營地址</td> 14 <td>倉庫地址</td> 15 <td>上年度銷售</td> 16 <td>總負債</td> 17 <td>銀行負債</td> 18 <td>上年度淨利潤</td> 19 </tr> 20 <tr id="tShopRow0"> 21 <td> 22 <input id="shop[0].shopName" class="easyui-validatebox" name="shop[0].shopName" data-options="required:true,validType:'length[1,200]'"> 23 </td> 24 <td> 25 <input id="shop[0].platformName" class="easyui-validatebox" name="shop[0].platformName" data-options="required:true,validType:'length[1,200]'"> 26 </td> 27 <td> 28 <input id="shop[0].shopLevel" class="easyui-validatebox" name="shop[0].shopLevel" data-options="required:true,validType:'length[1,100]'"> 29 </td> 30 <td> 31 <input id="shop[0].operatingPeriod0" class="easyui-validatebox" name="shop[0].operatingPeriod" data-options="required:true,validType:'length[1,100]'"> 32 </td> 33 <td> 34 <input id="shop[0].shopOwner" class="easyui-validatebox" name="shop[0].shopOwner" data-options="required:true,validType:'length[1,200]'"> 35 </td> 36 <td> 37 <input id="shop[0].subAccount" class="easyui-validatebox" name="shop[0].subAccount" data-options="required:true,validType:'length[1,100]'"> 38 </td> 39 <td> 40 <input id="shop[0].sbuPassword" class="easyui-validatebox" name="shop[0].sbuPassword" data-options="required:true,validType:'length[1,100]'"> 41 </td> 42 <td> 43 <input id="shop[0].businessOpera" class="easyui-validatebox" name="shop[0].businessOpera" data-options="required:true,validType:'length[1,300]'"> 44 </td> 45 <td> 46 <input id="shop[0].businessAddress" class="easyui-validatebox" name="shop[0].businessAddress" data-options="required:true,validType:'length[1,300]'"> 47 </td> 48 <td> 49 <input id="shop[0].warehouseAddress" class="easyui-validatebox" name="shop[0].warehouseAddress" data-options="required:true,validType:'length[1,300]'"> 50 </td> 51 52 <td> 53 <input id="shop[0].salesIncome" class="easyui-validatebox" name="shop[0].salesIncome0" data-options="required:true,validType:'length[1,100]'"> 54 </td> 55 <td> 56 <input id="shop[0].totalLiability" class="easyui-validatebox" name="shop[0].totalLiability" data-options="required:true,validType:'length[1,100]'"> 57 </td> 58 <td> 59 <input id="shop[0].bankLiabilities" class="easyui-validatebox" name="shop[0].bankLiabilities" data-options="required:true,validType:'length[1,100]'"> 60 </td> 61 <td> 62 <input id="shop[0].netProfit" class="easyui-validatebox" name="shop[0].netProfit" data-options="required:true,validType:'length[1,100]'"> 63 </td> 64 65 </tr> 66 </table> 67 <br /> 68 <div > 69 <a href="#" onclick="addShopRow()">添加一行</a> 70 <a href="#" onclick="delShopRow()">刪除一行</a> 71 </div> 72 </div>html
js代碼:

1 //添加行
2 function addShopRow(){
3 var num=$("#rowCount").val();//取值
4 num=parseInt(num);
5 num++;
6 $("#tShopRow0").clone(true).attr("id","tShopRow"+num).appendTo("#tblShopData");
7 $("#tShopRow"+num+" td").each(function(){
8 $(this).find("input[type='text']").val("");//清空數據
9 $(this).find("input[name='shop[0].shopName']").attr("id","shop['"+num+"'].shopName").attr("name","shop['"+num+"'].shopName");
10 $(this).find("input[name='shop[0].platformName']").attr("id","shop['"+num+"'].platformName").attr("name","shop['"+num+"'].platformName");
11 $(this).find("input[name='shop[0].shopLevel']").attr("id","shop['"+num+"'].shopLevel").attr("name","shop['"+num+"'].shopLevel");
12 $(this).find("input[name='shop[0].operatingPeriod']").attr("id","shop['"+num+"'].operatingPeriod").attr("name","shop['"+num+"'].operatingPeriod");
13 $(this).find("input[name='shop[0].shopOwner']").attr("id","shop['"+num+"'].shopOwner").attr("name","shop['"+num+"'].shopOwner");
14 $(this).find("input[name='shop[0].subAccount']").attr("id","shop['"+num+"'].subAccount").attr("name","shop['"+num+"'].subAccount");
15 $(this).find("input[name='shop[0].sbuPassword']").attr("id","shop['"+num+"'].sbuPassword").attr("name","shop['"+num+"'].sbuPassword");
16 $(this).find("input[name='shop[0].businessOpera']").attr("id","shop['"+num+"'].businessOpera").attr("name","shop['"+num+"'].businessOpera");
17 $(this).find("input[name='shop[0].businessAddress']").attr("id","shop['"+num+"'].businessAddress").attr("name","shop['"+num+"'].businessAddress");
18 $(this).find("input[name='shop[0].warehouseAddress']").attr("id","shop['"+num+"'].warehouseAddress").attr("name","shop['"+num+"'].warehouseAddress");
19 $(this).find("input[name='shop[0].salesIncome']").attr("id","shop['"+num+"'].salesIncome").attr("name","shop['"+num+"'].salesIncome");
20 $(this).find("input[name='shop[0].totalLiability']").attr("id","shop['"+num+"'].totalLiability").attr("name","shop['"+num+"'].totalLiability");
21 $(this).find("input[name='shop[0].bankLiabilities']").attr("id","shop['"+num+"'].bankLiabilities").attr("name","shop['"+num+"'].bankLiabilities");
22 $(this).find("input[name='shop[0].netProfit']").attr("id","shop['"+num+"'].netProfit").attr("name","shop['"+num+"'].netProfit");
23 });
24 $('#rowCount').val(num);//重新賦值
25 }
26 //刪除行
27 function delShopRow(){
28 var num=$("#rowCount").val();//取值
29 num=parseInt(num);
30 if(num>0){
31 $("#tShopRow"+num).remove();
32 num--;
33 $('#rowCount').val(num);//重新賦值
34 }else{
35 alert("這是第一行了!");
36 }
37
38 }
javaScript
第二種方式:
spring Mvc控制器入口:

1 public void save(HttpServletRequest request,HttpServletResponse response) throws Exception{
2 BusLoanInfoGuaranter busLoanInfoGuaranter=new BusLoanInfoGuaranter();
3 busLoanInfoGuaranter.setBid(busLoanInfo.getId());
4 busLoanInfoGuaranter.setGuaranterName(request.getParameter("guaranterName"+i));
5 busLoanInfoGuaranter.setGuaranterCard(request.getParameter("guaranterCard"+i));
6 busLoanInfoGuaranter.setGuaranterEmployer(request.getParameter("guaranterEmployer"+i));
7 busLoanInfoGuaranter.setGuaranterDuties(request.getParameter("guaranterDuties"+i));
8 busLoanInfoGuaranter.setGuaranterPhone(request.getParameter("guaranterPhone"+i));
9 busLoanInfoGuaranter.setGuaranterMaritalStatus(request.getParameter("guaranterMaritalStatus"+i));
10 busLoanInfoGuaranter.setGuaranterHouseAddress(request.getParameter("guaranterHouseAddress"+i));
11 busLoanInfoGuaranter.setGuaranterMonthlyIncome(request.getParameter("guaranterMonthlyIncome"+i));
12 busLoanInfoGuaranter.setGuaranterValues(request.getParameter("guaranterValues"+i));
13 busLoanInfoGuaranter.setGuaranterTotalLiabilities(request.getParameter("guaranterTotalLiabilities"+i));
14 }
spring Mvc訪問入口
htm代碼:

1 <div class="ftitle">是否提供自然人保證,是就填寫下面信息</div> 2 <div class="fitem"> 3 <label class="ui-label">是否提供自然人保證:</label><select class="easyui-combobox" name="ifGuaranter" > 4 <option value=""></option> 5 <option value="是">是</option> 6 <option value="否">否</option> 7 </select> 8 </div> 9 10 <div class="ftitle">保證人信息</div> 11 <div class="fitem"> 12 <table id="tblData"> 13 <tr> 14 <td>保證人姓名</td> 15 <td>證件號碼</td> 16 <td>工作單位</td> 17 <td>職務</td> 18 <td>聯系電話</td> 19 <td>婚姻狀況</td> 20 <td>家庭地址</td> 21 <td>月收入情況</td> 22 <td>資產總額</td> 23 <td>負債總額</td> 24 </tr> 25 <tr id="tRow0"> 26 <td> 27 <input type="text" id="guaranterName0" name="guaranterName0" > 28 </td> 29 <td> 30 <input type="text" id="guaranterCard0" name="guaranterCard0" > 31 </td> 32 <td> 33 <input type="text" id="guaranterEmployer0" name="guaranterEmployer0" > 34 </td> 35 <td> 36 <input type="text" id="guaranterDuties0" name="guaranterDuties0" > 37 </td> 38 <td> 39 <input type="text" id="guaranterPhone0" name="guaranterPhone0" > 40 </td> 41 <td> 42 <select id="guaranterMaritalStatus0" name="guaranterMaritalStatus0" > 43 <option value=""></option> 44 <option value="已婚">已婚</option> 45 <option value="未婚">未婚</option> 46 <option value="離異">離異</option> 47 <option value="喪偶">喪偶</option> 48 <option value="其他">其他</option> 49 </select> 50 </td> 51 <td> 52 <input type="text" id="guaranterHouseAddress0" name="guaranterHouseAddress0" > 53 </td> 54 <td> 55 <input type="text" id="guaranterMonthlyIncome0" name="guaranterMonthlyIncome0" > 56 </td> 57 <td> 58 <input type="text" id="guaranterValues0" name="guaranterValues0" > 59 </td> 60 <td> 61 <input type="text" id="guaranterTotalLiabilities0" name="guaranterTotalLiabilities0" > 62 </td> 63 </tr> 64 </table> 65 <br /> 66 <div > 67 <a href="#" onclick="addGuaranterRow()">添加一行</a> 68 <a href="#" onclick="delGuaranterRow()">刪除一行</a> 69 </div> 70 71 </div>html
js代碼:

1 //保證人添加行
2 function addGuaranterRow(){
3 var num=$("#guaranterRowCount").val();
4 num=parseInt(num);
5 num++;//點擊自加
6 $("#tRow0").clone(true).attr("id","tRow"+num).appendTo("#tblData");
7 $("#tRow"+num+" td").each(function(){
8 $(this).find("input[type='text']").val("");//清空數據
9 $(this).find("input[name='guaranterName0']").attr("id","guaranterName"+num).attr("name","guaranterName"+num);
10 $(this).find("input[name='guaranterCard0']").attr("id","guaranterCard"+num).attr("name","guaranterCard"+num);
11 $(this).find("input[name='guaranterEmployer0']").attr("id","guaranterEmployer"+num).attr("name","guaranterEmployer"+num);
12 $(this).find("input[name='guaranterDuties0']").attr("id","guaranterDuties"+num).attr("name","guaranterDuties"+num);
13 $(this).find("input[name='guaranterPhone0']").attr("id","guaranterPhone"+num).attr("name","guaranterPhone"+num);
14 $(this).find("input[name='guaranterMaritalStatus0']").attr("id","guaranterMaritalStatus"+num).attr("name","guaranterMaritalStatus"+num);
15 $(this).find("input[name='guaranterHouseAddress0']").attr("id","guaranterHouseAddress"+num).attr("name","guaranterHouseAddress"+num);
16 $(this).find("input[name='guaranterMonthlyIncome0']").attr("id","guaranterMonthlyIncome"+num).attr("name","guaranterMonthlyIncome"+num);
17 $(this).find("input[name='guaranterValues0']").attr("id","guaranterValues"+num).attr("name","guaranterValues"+num);
18 $(this).find("input[name='guaranterTotalLiabilities0']").attr("id","guaranterTotalLiabilities"+num).attr("name","guaranterTotalLiabilities"+num);
19 });
20 $("#guaranterRowCount").val(num);//重新賦值
21 }
22 //保證人刪除行
23 function delGuaranterRow(){
24 var num=$("#guaranterRowCount").val();
25 num=parseInt(num);
26 if(num>0){//判斷是不是第一行
27 $("#tRow"+num).remove();
28 num--;//刪除後要自減
29 $('#guaranterRowCount').val(num);//重新賦值
30 }else{
31 alert("這是第一行了!");
32 }
33 }
javascript
完,備忘用。