Bootstrap Table 默認將 queryParams 返回的對象序列化為 JSON 字符串({"page":1,"rows":10})作為請求體發送,後端若期望傳統表單格式(page=1&rows=10)會解析失敗。
$('#table').bootstrapTable({
method: 'post',
contentType: 'application/x-www-form-urlencoded', // 關鍵:設置 Content-Type
queryParams: function(params) {
// params 已包含 pageNumber, pageSize 等內置參數
// 直接返回對象,jQuery 會自動按 contentType 序列化
return {
page: params.pageNumber,
rows: params.pageSize,
// 其他業務參數...
};
}
});
原理:jQuery $.ajax 根據 contentType 決定序列化方式,設置為 application/x-www-form-urlencoded 時會調用 $.param() 將對象轉為 key=val&key2=val2 格式。
queryParams: function(params) {
return $.param({
page: params.pageNumber,
rows: params.pageSize
}); // 返回已編碼的字符串
},
contentType: 'application/x-www-form-urlencoded'
@PostMapping("/list")
public ResponseEntity<PageResult> list(@RequestBody QueryParams params) {
// 直接接收 JSON 對象,無需前端改動
}
需確保請求頭 Content-Type: application/json(Bootstrap Table 默認行為)。
pageNumber/pageSize(或 offset/limit),需按後端約定映射為 page/rows。method: 'get',參數會拼接在 URL 後,contentType 無效。request.getInputStream())確認解析結果