Итак, в 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
и route tasks/123/add
на тот же метод, который принимает Optional[Long]
. есть идеи как это сделать? Спасибо.
Итак, я получил своего рода не ошибку, это ответ функции на Lighthouse: "Мы удалили поддержку Option [Long] в связующих элементах пути, поскольку нет смысла иметь необязательный параметр пути. реализуйте свой собственный путь, который поддерживает его, если хотите". Пока у меня есть 2 решения, передающих -1 в качестве parentId, что мне действительно не нравится. Или имеет 2 разных метода, которые, вероятно, имеют больше смысла в этом случае. Реализация PathBindable сейчас кажется нецелесообразной, поэтому я, вероятно, придерживаюсь двух методов.