play framework中实现分页

来源:互联网 发布:手机音乐编辑软件 编辑:程序博客网 时间:2024/05/22 23:37

在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);这样就可以实现分页了。