在Scala Play 2.0 Framework中搜索表单提交和分页

时间:2012-05-09 16:37:12

标签: scala playframework playframework-2.0

我正在建立一个具有基本搜索功能的网站。查询包含一些信息,因此我有一个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个对象,还是需要拆分所有参数?

我的想法是我的分页链接会转到类似这样的网址:

@{Application.search(query, pageNo)}

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

1 个答案:

答案 0 :(得分:3)

如果您创建自己的QueryBinders,则可以传递Query对象。您可以查看the ones in Play以查看如何执行此操作。请务必将您的对象(具有隐式QueryBinders的对象)添加到routesImport文件中的变量Build.scala

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