1

В Rails я могу сказать:Дополнительный именованный параметр в Play Framework

get 'path1/:path2/(:path3)' => "controller#action" 

где path3 необязательный параметр имени и есть слэш перед ним. В Play Framework я нашел способ сделать что-то подобное, но только для параметров с ?.

Как это сделать в Play Framework?

ответ

8

Поддержка необязательных параметров пути уронили с 2.1 see:

Мы удалили вариант [...] поддержка в пути bindables, поскольку он не имеет смысла иметь необязательный параметр пути. Вы можете реализовать свой собственный связующий путь, который поддерживает его, если хотите.

Возможное решение (которое реализует связывание) описано here.

Но самое простое решение может быть просто определить два маршрута:

GET /path/:a     controllers.Application.show(a, b = "default") 
GET /path/:a/:b    controllers.Application.show(a, b) 

Кстати, то, что вы имеете в виду, чтобы это параметры пути и параметры запроса (часть после ? в качестве URL). Named parameters - совершенно другая (и несвязанная) история.

+0

Что делать, если нет значения по умолчанию (я не знаю и не должен знать значение по умолчанию)? это должен быть полностью необязательный параметр. –

+0

Ну, вы хотите делать разные вещи в зависимости от того, установлен ли параметр или нет, правильно, так как иначе было бы совершенно бесполезно иметь его в первую очередь. Таким образом, вы можете просто проложить два пути к различным функциям контроллера, которые выполняют соответствующую работу, я действительно не вижу здесь проблемы – Leo

+0

, почему бы не использовать только 'GET/path /: a controllerlers.Application.show (a)' вместо использования параметра по умолчанию? –

Смежные вопросы