所以在 Play 2.0 中我有这个:
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.
基本上,我想要完成的是让 routetasks/add
和 routetasks/123/add
链接到接受Optional[Long]
. 知道怎么做吗?谢谢。
好的,所以我得到了一种它不是错误,它是 Lighthouse 上的功能响应:“我们删除了路径可绑定中的 Option[Long] 支持,因为拥有可选路径参数没有意义。您可以实现自己的如果你愿意,可以支持它的路径可绑定。” 到目前为止,我有 2 个解决方案,将 -1 作为 parentId 传递,我不太喜欢。或者有两种不同的方法,在这种情况下可能更有意义。现在实现 PathBindable 似乎不太可行,所以我可能会坚持使用 2 种方法。