2014-04-30 78 views
2

我的 「路線」 文件中使用case類看起來類似:斯卡拉播放2.0:是否有可能在 「路線」

# Routes 
GET /  controllers.Application.action(p1 ?= 1, p2 ?= 2, p3 ?= "", p4 ?= "") 

我想有這樣的:

case class FilterGroup(p1: Int, p2: Int, p3: String, p4: String) // defined in controllers 

# Routes 
GET /  controllers.Application.action(fg ?= FilterGroup(1, 2, "", "")) 

優點是,當您需要添加或刪除一些參數時,它將在.scala.html中提供更多的可擴展性。

是否可以實施?

+0

製作'FilterGroup' [PathBindable](http://julien.richard-foy.fr/blog/2012/04/09/how-to-implement-a-custom-pathbindable-with-play-2/)可能是一種可能的方法,但我不確定你現在可以同時綁定多個參數。 – Mikesname

回答

1

查看QueryStringBindable和PathBindable特徵。試圖實現隱性粘合劑爲你的情況類(here is example),然後你需要設置在你build.sbt路由引入項目設置,在裏面存放你的case類和粘合劑包:

routesImport ++= Seq("foo", "bar") 
+0

這似乎很多代碼沒有太多好處。 :( –