我正在建立一个具有基本搜索功能的网站。查询包含一些信息,因此我有一个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]
。
答案 0 :(得分:3)
如果您创建自己的QueryBinders
,则可以传递Query对象。您可以查看the ones in Play以查看如何执行此操作。请务必将您的对象(具有隐式QueryBinders
的对象)添加到routesImport
文件中的变量Build.scala
。
另一种方法是遵循Computers示例的分页(在Play Framework版本的samples
文件夹中),它使用GET请求和一些参数在页面之间移动。