EasyUI Datagrid 設置 pagination: true 後,請求無法進入 SpringMVC 控制器方法;註釋掉則正常。
開啟分頁後,EasyUI 會自動附加分頁參數:
page:當前頁碼(從 1 開始)rows:每頁行數若後端控制器方法參數未聲明這兩個參數,或類型不匹配、綁定失敗,SpringMVC 會拋出 400 Bad Request 或參數解析異常,導致請求不進入方法體。
@RequestMapping("/list")
@ResponseBody
public DataGridResult list(
@RequestParam(defaultValue = "1") int page,
@RequestParam(defaultValue = "20") int rows,
// 其他查詢條件參數...
) {
// 業務邏輯
return new DataGridResult(total, rowsList);
}
public class PageRequest {
private int page = 1;
private int rows = 20;
// getter/setter
}
@RequestMapping("/list")
@ResponseBody
public DataGridResult list(PageRequest pageRequest, QueryCondition condition) {
// pageRequest.page, pageRequest.rows 自動綁定
}
F12 Network 面板查看實際請求:
Request URL: /list?page=1&rows=20&otherParam=xxx
Request Method: GET
Status Code: 200 OK
確保參數名與後端一致(page/rows),若自定義需在 Datagrid 配置:
$('#dg').datagrid({
pagination: true,
pagePosition: 'bottom',
pageNumber: 1,
pageSize: 20,
pageList: [10,20,50],
queryParams: { otherParam: 'xxx' } // 額外參數
});
| 現象 | 原因 | 解決 |
|---|---|---|
| 400 Required Integer parameter 'page' is not present | 未加 @RequestParam 或 defaultValue | 添加默認值 |
| 進入方法但 page=0 | EasyUI 傳 page=1,但實體類初始值為 0 | 實體類初始化 page=1 |
| 總數 total 返回錯誤導致分頁條異常 | 後端未返回 total 字段 | 返回對象必須包含 total 和 rows |
{
"total": 100,
"rows": [
{"id":1,"name":"張三"},
{"id":2,"name":"李四"}
]
}
EasyUI 分頁會自動發送 page/rows,後端必須聲明接收。建議封裝 PageRequest 基類,所有列表接口統一繼承,徹底解決參數綁定問題。