2

我正在制作一个具有基本搜索功能的网站。查询包含一些信息,所以我有一个case class Query包含搜索信息。可能会有很多结果,所以我需要支持分页。

这是处理表单提交的方法。我使用 GET,所以该页面是可收藏的。

  GET  /search   controllers.Application.submit

  def submit = Action { implicit request =>
    searchForm.bindFromRequest.fold(
      errors => BadRequest(views.html.index(errors)),
      query => doSearch(query, 0))
  }

当我想支持分页时,问题就来了。我希望 URL 不改变,只&page=i添加一个参数。但是,我可能不想回到submit控制器上的操作(但也许我在这里错了)。

我怎样才能提供这个?如果我有单独的分页路线,我可以传递Query对象还是需要分解所有参数?

我的想法是,我的分页链接将转到类似于此的 URL:

@{Application.search(query, pageNo)}

当然,我不能只将它提交到我的表单提交操作,因为它需要一个play.api.mvc.Request[play.api.mvc.AnyContent].

4

1 回答 1

3

如果您创建自己的 Query 对象,则可以传递该对象QueryBinders。您可以查看Play 中的内容以了解如何操作。请记住将您的对象(具有隐含的对象QueryBinders)添加到文件中的变量routesImportBuild.scala

另一种选择是遵循 Computers 示例的分页(在samplesPlay Framework 版本的文件夹中),它使用 GET 请求和一些参数在页面之间移动。

于 2012-05-09T20:59:45.813 回答