Java分页器

Java分页器,java,pagination,playframework-2.0,Java,Pagination,Playframework 2.0,我正在用Play2和java编写小型web应用程序。我有实体列表,现在我要把它们分成几页。我从Twitter引导中获取用于分页的组件,进行数据库查询以返回实体页面和。。我应该使用哪种方式构建页面导航器 我的意思是:举例来说,我总共有20页,将展示第12页。我有5个位置显示每页按钮。是否有一些LIB或代码段可以生成如下内容: 1.11 12 13 .. 20我知道这并不难,我已经在我以前的项目中实现了它。。。但是有一个罐子来解决这个问题对我来说是很酷的。有什么解决方案吗?据我所知,模板中不支持分页

我正在用Play2和java编写小型web应用程序。我有实体列表,现在我要把它们分成几页。我从Twitter引导中获取用于分页的组件,进行数据库查询以返回实体页面和。。我应该使用哪种方式构建页面导航器

我的意思是:举例来说,我总共有20页,将展示第12页。我有5个位置显示每页按钮。是否有一些LIB或代码段可以生成如下内容:
1.11 12 13 .. 20我知道这并不难,我已经在我以前的项目中实现了它。。。但是有一个罐子来解决这个问题对我来说是很酷的。有什么解决方案吗?

据我所知,模板中不支持分页,但幸运的是,
Ebean
支持分页,所以您只需要在模板中做一些工作

检查一下,页面是为计算机列表实现的(它也使用Twitter引导,所以您只需要复制和粘贴代码)


当然,您也可以在下载到计算机上的Play版本中找到示例应用程序。

我可以与您分享我拥有的,我也在使用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()));
    }
}

-1和-2参数有点难看,但直到现在我还没有找到更好的解决方案

谢谢,是的,这有一段时间很有用。我构建了这样的东西:>但这并不是我想要的。我仍然想知道为什么没有现成的解决方案。不在游戏框架中,也不在其他任何地方。为什么你认为它应该?尽管Play被称为
web
框架,但这并不意味着它应该提供像CMS一样的即时小部件和代码片段。如果开发人员决定这样做,他们将浪费时间,并用数百个不必要的元素使框架过载。有一大堆现成的CMS,提供模板和所有必需的小部件,Play的目标不是成为其中的一员。顺便说一句,如果你需要构建更好的分页选择器,你需要查看Eben的文档,以了解
分页列表查询
(页面参考指南第6.7章:)我不说他们应该,但在我看来,分页并不是很少见的。一些现成的工具可以简化开发人员的生活。我不是说用javascript控制器或类似的东西生成html布局。我只是想找到一个很好的解决方案,生成一个包含正确页码的列表。这不是一个剧本的目标:)我写这篇文章不是因为我想争论——只是我可以看到开发团队的选择,我可以接受,因为我几乎总是同意他们的选择。尽管我不同意你的观点,但我理解你的观点,解决方案之一是创建一个包含公共“小部件集”的模块,并将其发布到某个公共场所,但我很确定开发团队不会对此感兴趣,因为他们关注的是“机制”。因为这不是框架任务的一部分,所以它也应该由社区提供,IMHOOh,谢谢。顺便问一下,寻呼机是什么意思?它就像java的寻呼机?
@(pager:models.helper.Pager[_])
<div class="pagination">
  <ul>
    <li class="prev@if(pager.isFirst){ disabled}">
        <a href="@pager.getPreviousUrl">&larr; 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 &rarr;</a>
    </li>
  </ul>
</div>
pager.urlTemplate = routes.Application.myAction(-1, -2).url