我正在使用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参数添加到生成的网址中,而不会在模板内部使用fold
到Form
之类的丑陋代码等?
答案 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
不是特别漂亮,但比硬编码网址更好。