使用Play Framework中的可选GET参数进行反向路由

时间:2013-12-10 11:32:23

标签: scala playframework playframework-2.2

我正在使用scala 2.10和playframework 2.2.1

让我们假设以下路由:

GET    /users/page/:page/limit/:limit    controllers.Users.showUsers(page: Int, limit: Int)

我想使用GET方法和少数字段添加搜索表单,并添加一些分页。 例如,在表单提交后,url将如下所示:

http://example.com/users/page/1/limit/20?login=someLogin&email=

为了避免在分页代码中使用硬编码,我在模板中使用反向路由,例如@routes.Users.showUsers(currentPage, limit)。是否可以将GET参数添加到生成的网址中,而不会在模板内部使用foldForm之类的丑陋代码等?

1 个答案:

答案 0 :(得分:4)

是的,有点儿。 Play 2.2中删除了可选的路径参数,因此您必须为分页参数定义默认值。反向路由器将知道如何填充它们。

GET    /users/page/:page/limit/:limit       controllers.Users.showUsers(page: Int, limit: Int, login: String ?= "", email: String ?= "")

object Users extends Controller {

     def showUsers(page: Int, limit: Int, login: String = "", email: String = "") {
          // show those users..
     }
}

@routes.Users.showUsers(3, 20, "someLogin")会生成网址:/users/page/3/limit/20?login=someLogin

不是特别漂亮,但比硬编码网址更好。