首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

SpringMVC MyBatis 批量接收前端動態 Table 數據:同名輸入框數組綁定或 JSON 字符串傳遞

     編輯:程式設計疑難解答

方案一:同名表單字段 → 後端數組/List 自動綁定 (最簡單)

前端所有行的同一列輸入框 **name 屬性完全一致** (如 name="xiangmu_code"),後端參數聲明為數組或 List:

// Controller
public String batchUpdate(
    @RequestParam("id2") String[] ids,
    @RequestParam("xiangmu_code") String[] codes,
    @RequestParam("value") String[] values,
    @RequestParam("xiangmu_name") String[] names,
    @RequestParam("content") String[] contents
) {
    for (int i = 0; i < ids.length; i++) {
        VisceraXiangmu v = new VisceraXiangmu();
        v.setId(Integer.parseInt(ids[i]));
        v.setXiangmu_code(codes[i]);
        // ... 設置其他字段
        service.update(v);
    }
    return "success";
}

方案二:前端構建 JSON 字符串 → 後端單參數接收 → 反序列化 List

// 前端 JS
var list = [];
$('#tbody tr').each(function() {
    list.push({
        id: $(this).find('[name=id2]').val(),
        xiangmu_code: $(this).find('[name=xiangmu_code]').val(),
        value: $(this).find('[name=value]').val(),
        xiangmu_name: $(this).find('[name=xiangmu_name]').val(),
        content: $(this).find('[name=content]').val()
    });
});
$.ajax({
    url: '/batchUpdate',
    type: 'POST',
    contentType: 'application/json',
    data: JSON.stringify(list), // 發送 JSON 字符串
    success: ...
});

// 後端 Controller
@PostMapping("/batchUpdate")
public String batchUpdate(@RequestBody List list) {
    service.batchUpdate(list);
    return "success";
}

方案選擇建議

場景推薦方案
字段固定、數量少、不想引入 JSON 庫方案一 (同名數組)
字段多、巢狀對象、前後端分離項目方案二 (JSON + @RequestBody)
需兼容老瀏覽器/特殊代理方案一 (表單提交兼容性最好)

關鍵提醒

  • 方案一要求**每行輸入框 name 完全一致**,且順序與後端數組下標對應。
  • 方案二需確保前端對象屬性名與後端實體類字段名一致 (或配置 @SerializedName)。
  • 批量更新建議在 Service 層開啟事務 @Transactional 保證原子性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved