问题描述:
通过分页查询,每次从后台取20条数据(从15000条数据取)到jsp中展示,按理20条数据不会很多,本地测试,不存在网速原因,但是为什么数据在显示时是一行一行加载出来的?
原因:
后来经过分析,发现,获取的是20条数据,不假,但是每一条数据对应的需要显示一个逾期次数,而这个逾期次数是把15000条数据对应的逾期次数全部取出来,然后在页面上做循环分别取出对应的次数,循环语句如下:
<td>
<c:forEach items="${overvisitRemindList }" var="visitremind" varStatus="status">
<c:if test="${visitremind.cid eq entity.cid }">${visitremind.count }次</c:if></c:forEach>
</td>
这意味着获取出来的20条数据中,每一条都要去循环15000次,然后取出逾期次数,这不一条条加载就怪了。
处理方式:
在后台做处理,取出20条数据后,循环20条数据去取对应的逾期次数,然后到页面显示.
后台处理:
// 获取逾期次数
for(IntentionCustomer ic : page.getList()) {
ic.put("overvisitRemind", VisitRemindService.service.getOverRemindCount(ic.getId()));
}
页面展示:
<td>
<a data-toggle="modal" href="#" οnclick="getvisitlist('${entity.cid}');" data-target="#visitremind_recordss">
<c:if test="${entity.overvisitRemind != 0 }">${entity.overvisitRemind }次</c:if>
</a>
</td>