1

我想在play 2.4 java中使用可選參數。閱讀docs後,我添加了以下路線:可選參數在播放中的url重寫2.4

GET /api/users/:page controllers.EmployeeController.getUsers(page:Int,pageSize:Int ?= 10) 

我想要的頁面大小是在這個網址可選。我可以訪問網址是:

/api/users/1 
/api/users/1?pageSize=5 

但問題是,我想使用第二個網址,如:

/api/users/1/5 

目前給我的動作沒有找到。

有沒有辦法實現這個目標?

注意:我不想創建一個分離的URL作爲@Salem提到。我想在路由文件中使用這個單一的URL。

回答

1

只需添加第二映射到同一個控制器(這種假設你想使用「10」作爲pageSize的值,如果沒有提供)

GET  /api/users/:page    controllers.EmployeeController.getUsers(page:Int,pageSize:Int = 10) 
GET  /api/users/:page/:pageSize controllers.EmployeeController.getUsers(page:Int,pageSize:Int) 

注意,如果不可選了第二個參數

+0

謝謝,但我忘了提及,我不想創建新的路線。有沒有其他方法? – silentprogrammer

+0

我不這麼認爲。您可以嘗試編寫像[this](http://stackoverflow.com/a/38873541/1205368)這樣的過濾器來覆蓋該特定的url,但這對於沒有做任何工作的Java控制器不起作用。也有點矯枉過正。如果你在Play前面有Nginx/Apache/etc,你可以在那裏重寫url ... – Salem

+0

@silentprogrammer什麼是避免你創建另一個路由? –