我正在使用play 2和java编写小型web应用程序。我有实体列表,现在我要把它们分成几页。我从Twitter Bootstrap获取分页组件,使我的数据库查询返回实体页面和..我应该用哪种方式来构建页面导航器?
我指的是以下内容:例如,我总共有20页,并将显示第12页。我有5个位置来显示每页按钮。是否有一些libs或片段可以生成如下内容: 1 .. 11 12 13 .. 20.我知道这不是太难,我已经在我以前的项目中实现了......但是有一个罐子可以解决这个问题对我来说很酷。有什么解决方案吗?
答案 0 :(得分:4)
我可以分享你拥有的东西,我也使用bootstrap
package models.helper;
import java.util.ArrayList;
import java.util.List;
public class Pager<T> {
public List<T> entities;
public int page;
public int pages;
public String urlTemplate;
public int resultsPerPage;
public List<Integer> getPageList(){
List<Integer> pageList = new ArrayList<Integer>(pages);
for(int i = 1; i<=pages;i++){
pageList.add(i);
}
return pageList;
}
public int getPrevious(){
return page -1;
}
public int getNext(){
return page +1;
}
public boolean isCurrent(Integer page){
return this.page == page - 1;
}
public boolean isLast(){
return page == pages -1;
}
public boolean isFirst(){
return page == 0;
}
public String getUrl(Integer page){
return urlTemplate
.replace("-1", Integer.toString(resultsPerPage))
.replace("-2", Integer.toString(page-1));
}
public String getNextUrl(){
if(isLast()){
return "#";
}
return urlTemplate
.replace("-1", Integer.toString(resultsPerPage))
.replace("-2", Integer.toString(getNext()));
}
public String getPreviousUrl(){
if(isFirst()){
return "#";
}
return urlTemplate
.replace("-1", Integer.toString(resultsPerPage))
.replace("-2", Integer.toString(getPrevious()));
}
}
我的服务返回其中一个对象,在我的模板中我有一个寻呼机标签
@(pager:models.helper.Pager[_])
<div class="pagination">
<ul>
<li class="prev@if(pager.isFirst){ disabled}">
<a href="@pager.getPreviousUrl">← Previous</a>
</li>
@for(page <- pager.getPageList){
<li @if(pager.isCurrent(page)){class="active"}>
<a href="@pager.getUrl(page)">@page</a>
</li>
}
<li class="next@if(pager.isLast){ disabled}">
<a href="@pager.getNextUrl">Next →</a>
</li>
</ul>
</div>
模板网址将像这样构建(scala) 第一个参数是“resultsPerPage”,第二个参数是实际的“页面”
pager.urlTemplate = routes.Application.myAction(-1, -2).url
-1和-2参数有点难看,但直到现在我还没有找到更好的解决方案
答案 1 :(得分:3)
据我所知,模板中的分页不支持,但幸运的是Ebean
支持它,所以你只需要在模板中做一点工作。
检查Computer database sample application,那里为计算机列表实现了分页(它还使用了Twitter Bootstrap,所以你只需要复制并粘贴代码)
当然,您也可以在下载到计算机的Play版本中找到示例应用程序。