在playframework中实现分页,我是采用了数据库的fetch原理实现的。
首先,在controllers中:
public static void previousPage(int startPosition) {
int totalUpload = Upload.findAll().size();
if(startPosition == 0) {
startPosition = startPosition;
}
else {
startPosition = startPosition - 1;
}
showAllUploads(startPosition);
}
public static void nextPage(int startPosition) {
int totalUpload = Upload.findAll().size();
if(startPosition >= totalUpload/5) {
startPosition = startPosition;
}
else {
startPosition = startPosition + 1;
}
showAllUploads(startPosition);
}
这是上一页跟下一页的代码,然后在views文件中:
<div class="page-box">
<button class="next-page-btn"><a class="next-page-btn-a" href="@{Reports.showPreviousReport(startPosition)}">上一页</a></button>
<div class="page-box-row">
<a href="" class="current-page-a">第 1 页</a>
<span class="triangle"></span>
<ul class="page-ul">
%{
for(int i=0;i<totalReport/5;i++){
}%
<li class="page-item current-page-li"><a href="@{Reports.showAllReports(i)}">第 ${i+1} 页</a></li>
%{
}
}%
</ul>
</div>
<button class="next-page-btn"><a class="next-page-btn-a" href="@{Reports.showNextReport(startPosition)}">下一页</a></button>
</div>
</div>
这样,在页面中,用户每按下上一页/下一页的按钮就会触发controllers中的previousPage/nextPage方法。然后就可以通过传入的当前页面的参数startPosition进行判断,首先判断startPosition是否到达首页或者尾页,如果是的话就不进行处理,否则的话就将startPosition进行增减。然后调用显示页面,并将改变后的startPosition传递过去。然后在调用数据库中的from(startPosition*5).fetch(5);这样就可以实现分页了。