背景
测试反馈的一个问题,前端列表页,点击第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>