Trasy z opcjonalnym parametrem - Play 2.1 Scala
Tak więc w Play 2.0 miałem to:
GET /tasks/add controllers.Tasks.addTask(parentId: Option[Long] = None)
GET /tasks/:parentId/add controllers.Tasks.addTask(parentId: Option[Long])
Dzięki takiej metodzie kontrolera:
def addTask(parentId: Option[Long]) = Action {
Ok(views.html.addTask(taskForm, parentId))
}
I to działało. Kiedy przeprowadziłem migrację do wersji 2.1, wydaje się, że narzekają na te linie:No URL path binder found for type Option[Long]. Try to implement an implicit PathBindable for this type.
Zasadniczo staram się osiągnąć trasętasks/add
i trasatasks/123/add
link do tej samej metody, która akceptujeOptional[Long]
. Masz jakiś pomysł, jak to zrobić? Dzięki.
Ok, więc mam coś takiego, nie jest to błąd, to odpowiedź na funkcję w Lighthouse: „Usunęliśmy obsługę Option [Long] w ścieżkach bindów, ponieważ nie ma sensu posiadanie opcjonalnego parametru ścieżki. wiążąca ścieżkę, która ją wspiera, jeśli chcesz. Do tej pory mam 2 rozwiązania, przekazując -1 jako parentId, czego tak naprawdę nie lubię. Lub mając 2 różne metody, co prawdopodobnie ma w tym przypadku większy sens. Wdrożenie PathBindable nie wydaje się teraz zbyt wykonalne, więc prawdopodobnie będę trzymał się dwóch metod.