したがって、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.
基本的に、私が達成しようとしているのは、を受け入れる同じメソッドへのルートtasks/add
とルートリンクを設定することです。これを行う方法はありますか?ありがとう。tasks/123/add
Optional[Long]
わかりました。バグではないので、Lighthouseの機能応答です。「オプションのパスパラメータを設定しても意味がないため、パスバインド可能オブジェクトのOption[Long]サポートを削除しました。独自のパスパラメータを実装できます。よろしければ、それをサポートするパスバインド可能です。」これまでのところ、私は2つの解決策を持っており、親IDとして-1を渡しますが、これはあまり好きではありません。または、2つの異なる方法があります。これは、この場合はおそらくより理にかなっています。PathBindableの実装は今のところあまり実現可能ではないように思われるので、おそらく2つのメソッドを使用することに固執します。