【问题标题】:Pager alongside search form in Play! 2.3.3在 Play 中搜索表单旁边的寻呼机! 2.3.3
【发布时间】:2014-09-03 09:07:54
【问题描述】:

我正在使用 Play 框架 2.3.3。在一个页面上,我有一个实体列表以及使用标准播放表单绑定的过滤器表单,它就像一个魅力。但现在我想在列表下方添加分页。当用户单击列表下方的寻呼机链接(“下一个”或“上一个”)时,问题是保留表单参数。

类似的示例“计算机数据库”避免使用表单并处理简单方法参数等参数。但我的表单相当复杂:它绑定到case class SearchForm(purposeId: Option[Long], placeIds: Seq[Long], since: Option[Date], till: Option[Date])

在没有 JS 的情况下处理这种情况的最佳方法是什么?

【问题讨论】:

  • 您是使用 POST 搜索还是 GET?这听起来像 POST。不要使用 POST,使用 GET,并将您的参数放入路由器提取的查询参数中。然后您可以使用反向路由器轻松生成下一个/上一个链接,如下面的答案。

标签: forms scala playframework playframework-2.0 model-binding


【解决方案1】:

simplePaginator.scala.html(仅用于测试)

@(currentPage: Int, lastPage: Int, pageLink: Int => Call, width: Int = 5)

    @link(index: Int) = {
        <a href="@pageLink(index)">@{
            index + 1
        }</a>
    }


    @if(lastPage > 0) {
        <div class="pager">
            @link(currentPage - 1)
            @link(currentPage + 1)
            @link(lastPage)
        </div>
        <br>
    }

你必须提供pageLink功能。

GET     /page         @controllers.PageController.index(pageIndex:Int ?= 0)
GET     /page/:pageIndex         @controllers.PageController.index(pageIndex:Int)

然后调用:

@simplePaginator(currentPage,lastIndex,controllers.PageController.index)

【讨论】:

  • prev/next 我指的是列表下方的寻呼机链接,而不是浏览器按钮。
  • 我改成分页了。这只是简单的上一个/下一个。您可以使用二分搜索创建更复杂的分页工具栏。如果您愿意,我可以添加实施示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-17
  • 1970-01-01
  • 2011-03-31
  • 2018-10-29
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
相关资源
最近更新 更多