背景
測試回報的一個問題,前端清單頁,點選第2頁,沒有響應。第一反應是去檢視Chrome F12 Console有沒有報錯。
回顧
事實上,之前遇到一個看起來類似的問題,點選第3頁,頁面變為空白。一臉懵逼,檢視Console才發現有JSON解析失敗的報錯,重新整理頁面,點選其他頁面都是正常的;隻有第3頁才會變為空白,控制台報錯資訊為:
這個【王】是什麼鬼。檢視接口響應結果:
有三個字段以【王】開頭。會想JSON解析報錯,再重點看看remark字段,才發現有JSON解析邏輯。
即remark字段要麼為null或空,要麼得是一個JSON資料。現在測試環境造的髒資料不是JSON,則報錯。
定位問題
扯遠,此次點第2頁,沒有響應,控制台沒有報錯,說明不是前端JS報錯。檢視接口responseBody,很快發現問題:
是後端分頁有問題。看代碼:
public String strategyList(JSONObject jsonObject) {
PageHelper.startPage(Integer.parseInt(jsonObject.get("pageNo") + ""),
Integer.parseInt(jsonObject.get("pageSize") + ""));
list = channelPublicStrategyMapper.strategyList(jsonObject);
PageInfo<Map> pageInfo = new PageInfo<>(list);
return JSONObject.toJSONString(ServiceUtil.returnSuccessData(pageInfo));
}
看不出任何問題。調試,入參
jsonObject.get("pageSize") == 10
,前端傳參沒問題,但是最後傳回的
pageInfo
包裝資訊不對勁:
到此時還是一臉懵逼。。後來無意中點到源碼,才發現
PageHelper
和
PageInfo
不是同一個依賴包的API:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.9</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>2.1.0</version>
</dependency>