所以在播放2.0我有這樣的:路線可選參數 - 玩2.1斯卡拉
GET /tasks/add controllers.Tasks.addTask(parentId: Option[Long] = None)
GET /tasks/:parentId/add controllers.Tasks.addTask(parentId: Option[Long])
有了這樣的控制方法:
def addTask(parentId: Option[Long]) = Action {
Ok(views.html.addTask(taskForm, parentId))
}
而且這是工作。當我遷移到2.1時,它似乎抱怨這些行:No URL path binder found for type Option[Long]. Try to implement an implicit PathBindable for this type.
基本上,我試圖完成的是有路由tasks/add
和路由tasks/123/add
鏈接到接受Optional[Long]
相同的方法。任何想法如何做到這一點?謝謝。
好的,所以我得到了一種它並不是bug,它是Lighthouse的一個功能響應:「我們刪除了Path綁定中的Option [Long]支持,因爲它沒有任何意義可選的路徑參數。可以實現你自己的路徑綁定,支持它,如果你願意的話。「到目前爲止,我有兩個解決方案,傳遞-1作爲parentId,我不太喜歡。或者有兩種不同的方法,這在這種情況下可能更有意義。實現PathBindable現在看起來不太可行,所以我可能堅持使用2種方法。
謝謝,我已經報道了。你有沒有想法如何得到所需的行爲,而不必等待錯誤修復? – Laky 2013-02-20 17:21:43
好的,所以:「我們刪除了路徑綁定中的Option [Long]支持,因爲它沒有任何可選的路徑參數,您可以實現自己的路徑綁定,只要您願意,它就支持它。但傳遞一個可選的而不是一些任意的值在我看來好多了。這不就是我們首先有選擇權的原因嗎?也許我寧願在這種情況下創建2種不同的方法,因爲它比傳遞-1作爲id更有意義。 – Laky 2013-02-20 17:51:04
是的你是對的,那好多了。但是,我不明白他們的決定,爲什麼要刪除允許更好URL的內容? – 2013-02-20 17:54:11