2013-12-10 56 views
3

我使用Scala的2.10和playframework 2.2.1反向與遊戲框架可選GET參數

讓我們假設以下路由的路由:

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)分頁代碼URL硬編碼。是否有可能也添加GET參數到生成的網址沒有一些醜陋的代碼,如foldForm裏面的模板等?

回答

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

不是特別漂亮,但不是硬編碼的網址更好。

+0

你好,它還挺好的。但據我所知,沒有機會僅僅使用'Form'來處理來自請求的所有那些GET參數,而不是手動佈線。 –

+0

你是什麼意思?如果你能解釋你想要做的更多一點,這可能是可能的。 –

+0

例如,我不必手動將登錄名和電子郵件字段添加到routes.conf和'showUsers'中,以便在showUsers中使用'bindFromRequest'的隱式變體從請求中創建'Form'。讓我們想象我的表單裏有22個字段。在routes.conf中有22個參數,在showUsers中有22個參數。它有點不好 –