2012-05-09 36 views
2

我正在製作一個具有基本搜索功能的網站。查詢包含一些信息,所以我有一個case class Query來包含搜索信息。可能有很多結果,所以我需要支持分頁。在Scala Play 2.0框架中搜索表單提交和分頁

這是處理表單提交的方法。我使用GET,因此頁面可以收藏。

GET /search controllers.Application.submit 

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

問題來了,當我想支持分頁。我希望網址不會更改,並且只添加&page=i參數。不過,我可能不想通過控制器上的submit操作回來(但也許我在這裏錯了)。

我該如何提供這個?如果我有單獨的分頁路線,我可以通過Query對象,還是需要分解所有參數?

我的想法是,我的分頁鏈接會去類似這樣的URL:

@{Application.search(query, pageNo)} 

當然,我不能只是它提交到我的表單提交的行動,因爲它需要一個play.api.mvc.Request[play.api.mvc.AnyContent]

回答

3

如果您創建自己的QueryBinders,則可以傳遞Query對象。你可以檢查the ones in Play看看如何做到這一點。請記住將您的對象(含有隱含的QueryBinders的對象)添加到Build.scala文件中的變量routesImport

另一種替代方法是遵循計算機示例的分頁(在Play Framework發行版的samples文件夾中),該示例使用GET請求和一些參數在頁面之間移動。