EasyUI Datagrid 內聯編輯新增行後,表單提交無法獲取數據,Struts2 後台全局變量 code 未接收到值。
Datagrid 數據屬於客戶端 JavaScript 數組,非表單元素,普通 form.submit() 不會攜帶。需手動將數據序列化為 JSON,通過 AJAX 提交或注入隱藏域。
function submitGrid() {
var rows = $('#dg').datagrid('getRows'); // 獲取所有行數據
$.ajax({
url: 'saveAction.action',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({gridData: rows}),
success: function(res) { $.messager.alert('提示', res.msg); }
});
}
// Struts2 Action
private List<GridRow> gridData; // 對應 JSON 數組
// getter/setter
<form id="fm" method="post">
<input type="hidden" name="gridJson" id="gridJson" />
</form>
$('#fm').submit(function() {
$('#gridJson').val(JSON.stringify($('#dg').datagrid('getRows')));
});
建議使用 AJAX 方式,結構清晰且易於錯誤處理。