Routen mit optionalem Parameter - Spielen Sie 2.1 Scala
In Play 2.0 hatte ich also Folgendes:
GET /tasks/add controllers.Tasks.addTask(parentId: Option[Long] = None)
GET /tasks/:parentId/add controllers.Tasks.addTask(parentId: Option[Long])
Mit einer Controller-Methode wie dieser:
def addTask(parentId: Option[Long]) = Action {
Ok(views.html.addTask(taskForm, parentId))
}
Und es hat funktioniert. Als ich auf 2.1 umgestiegen bin, scheint es über diese Zeilen zu klagen mit:No URL path binder found for type Option[Long]. Try to implement an implicit PathBindable for this type.
Grundsätzlich versuche ich, Route zu habentasks/add
und Routetasks/123/add
Link auf die gleiche Methode, die ein akzeptiertOptional[Long]
. Irgendeine Idee, wie das geht? Vielen Dank.
Ok, sozusagen ist es kein Fehler, sondern eine Funktionsreaktion von Lighthouse: "Wir haben die Option [Long] -Unterstützung für Pfadbindungen entfernt, da es keinen Sinn macht, einen optionalen Pfadparameter zu haben. Sie können Ihren eigenen implementieren Pfad bindbar, der es unterstützt, wenn Sie bitte. " Bisher habe ich 2 Lösungen, die -1 als parentId übergeben, was mir nicht wirklich gefällt. Oder 2 verschiedene Methoden zu haben, was in diesem Fall wahrscheinlich sinnvoller ist. Die Implementierung von PathBindable scheint momentan nicht allzu realisierbar zu sein, daher werde ich mich wahrscheinlich an 2 Methoden halten.