Так в Play 2.0 Я это:Маршруты с дополнительным параметром - Play 2.1 Scala
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]
. есть идеи как это сделать? Благодарю.
Хорошо, поэтому я получил своего рода не ошибку, это ответ функции на Маяк: «Мы удалили опцию [Long] поддержку в связующих элементах пути, поскольку нет смысла иметь необязательный параметр пути. может реализовать свой собственный путь, который поддерживает его, если хотите ». Пока у меня есть 2 решения, передающих -1 в качестве parentId, что мне действительно не нравится. Или имеет 2 разных метода, которые, вероятно, имеют больше смысла в этом случае. Внедрение PathBindable сейчас кажется нецелесообразным, поэтому я, вероятно, придерживаюсь двух методов.
Спасибо, я сообщил об этом. Вы не знаете, как получить желаемое поведение, не дожидаясь исправления? – Laky
Итак, «Мы удалили опцию [Long] поддержки в связующих элементах пути, поскольку нет смысла иметь необязательный параметр пути. Вы можете реализовать свой собственный связующий путь, который поддерживает его, если хотите». Но передача Факультативного вместо какого-то произвольного значения мне кажется намного приятнее. Разве это не причина того, что у нас есть альтернативы? Возможно, я предпочел бы создать в этом случае 2 разных метода, поскольку это будет иметь больше смысла, чем передача -1 в качестве id. – Laky
Да, вы правы, это намного лучше. Однако я не понимаю их решения, зачем удалять что-то, что позволяет использовать более удобные URL-адреса? –