【问题标题】:How to do pagination using java in play framework?如何在play框架中使用java进行分页?
【发布时间】:2013-09-21 19:33:23
【问题描述】:

我正在我的网络应用中进行分页,那么该怎么做呢?

我想要的是:我想向管理员显示所有用户!

我浏览了这个游戏框架计算机应用程序computer-database,但我不想要这种类型的分页 computer -database 应用分页是:

但我想像谷歌一样:

我的查询与computer-database app 相同:

用户模型部分

public static Page<User> page(int page, int pageSize, String sortBy, String order, String filter) {
        return 
            find.where()
                .ilike("name", "%" + filter + "%")
                .orderBy(sortBy + " " + order)
                .findPagingList(pageSize)
                .getPage(page);
    }

视图是:

adm.scala.html

控制器是:

public static Result enter() {
        Form<Login> loginForm = Form.form(Login.class).bindFromRequest();

        if (loginForm.hasErrors()) {
            return badRequest(logi.render(loginForm));// errorsAsJson());
        }

        if(loginForm.get().email.equals("admin@admin.com") ) {

            return redirect(routes.paging.pag(0, "name", "asc", ""));

        }

paging.java

public class paging extends Controller {

    public static Result pag(int page, String sortBy, String order, String filter) throws ClassNotFoundException, SQLException {

return ok(adm.render(User.page(page, 2, sortBy, order, filter),
                sortBy, order, filter));

    }

给我一​​些关于分页的想法。

【问题讨论】:

    标签: java scala playframework pagination playframework-2.0


    【解决方案1】:

    你可以在游戏中使用分页模块,try this

    【讨论】:

      【解决方案2】:

      看看它http://www.kev009.com/wp/2012/12/reusable-pagination-in-play-2/ 它是用 scala 编写的,但用 java 可以轻松完成

      【讨论】:

        【解决方案3】:

        嗯...最简单的方法是检查它具有的API for Ebean's Page class 即。 getTotalPageCount() 方法,因此您可以轻松地从 0 迭代到 页数 以生成每页结果的链接(移除上一个/下一个箭头以保持样本清洁...)

        <div id="pagination2" class="pagination">
            <ul>
                @for(i <- 0 until currentPage.getTotalPageCount()){
                    <li><a  href="@link(i, null)">@(i+1)</a></li>
                }
            </ul>
        </div>
        

        此代码指的是mentioned sample - list view

        【讨论】:

        • 您能告诉我如何获取总页数吗?这背后的逻辑是什么?
        • @RahulKulhari 它只是执行附加查询,例如:select count(*) ... 当然它包含原始条件中的所有条件。您不需要手动执行此操作,上述方法在后台执行。
        • @biesior 链接不再起作用。请更新它。
        • @saurav 实际上,样本自 Play 的 2.3 分支以来已被删除,并被 Activator 的模板和/或种子所取代 - 答案中提到的代码现在可在 Computer Database Scala 模板中找到。
        【解决方案4】:

        这是我的分页示例代码:

        这里

        count是数据库中的总数据,

        skip是调用中跳过了多少数据,

        lengthOfElement是拉取了多少数据,

        collect 是每次查询最多提取多少数据,

         @(count:Int, skip:Int, lengthOfElement:Int, collect:Int)
        
        <div class="row">
            <div class="col-sm-12 col-md-5">
                <div class="dataTables_info" id="DataTables_Table_0_info" role="status" aria-live="polite">total
                    @count
                    entries, showing till @{skip+lengthOfElement}th
                </div>
            </div>
            <div class="col-sm-12 col-md-7">
                <div class="dataTables_paginate paging_simple_numbers" id="DataTables_Table_0_paginate">
                    <ul class="pagination">
                        <li class="paginate_button page-item  @if(skip==0){disabled}else{}" id="DataTables_Table_0_previous">
                            <a href="@student.routes.AllStudentsController.allStudents(skip-collect)" aria-controls="DataTables_Table_0" data-dt-idx="0" tabindex="0"
                               class="page-link">
                                Previous
                            </a>
                        </li>
        
                        @for(i<-0 until count/collect+(if(count%collect!=0){1}else{0})){
                        <li class="paginate_button page-item @if(skip==i*collect){active}else{}">
                            <a href="@student.routes.AllStudentsController.allStudents(i*collect)" aria-controls="DataTables_Table_0" data-dt-idx="1" tabindex="0"
                               class="page-link">
                                @{i+1}
                            </a>
                        </li>
                        }
        
                        <li class="paginate_button page-item  @if(lengthOfElement<collect || skip+collect==count){disabled}else{}" id="DataTables_Table_0_next">
                            <a href="@student.routes.AllStudentsController.allStudents(skip+collect)" aria-controls="DataTables_Table_0" data-dt-idx="3" tabindex="0"
                               class="page-link">
                                Next
                            </a>
                        </li>
                    </ul>
                </div>
            </div>
        </div>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-07-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-12
          • 1970-01-01
          相关资源
          最近更新 更多