2

Я использую Ember.js и Play для одностраничного веб-приложения с Play как API. Ember объединяет запросы, подобные этому, ?ids[]=401460&ids[]=379610. Но когда я попытаюсь обработать это значение в файле маршрутов Play, он буквально ожидает значение ids[] вместо ids. Но я не могу сказать файлу маршрутов искать ids[], потому что он выдает ошибки на [. Я пробовал использовать обратные тики, как в коде scala, `ids[]`, но это снова вызывает ошибки в файле маршрутов.Scala backticks в Play Framework Маршруты

Возможно ли это сделать в файле маршрутов?

GET /api/test  controllers.application.getTests(ids[]:List[Long]) 

Я знаю, что могу управлять его таким образом,

Map<String,String[]> params = request().body().asFormUrlEncoded(); 

Но я бы предпочел, чтобы просто позволить Play делать свое дело и обрабатывать его в маршрутах файл затем передать значение прочь.

Возможно ли это или возможно использовать только один вариант, используя asFormUrlEncoded?

Update: (работа вокруг с минимальными изменениями)

Во время игры с ним вокруг еще немного, я наткнулся на то, что даже если я не могу добавить его в список параметров строки запроса в файле маршрутов он все равно передается функции. Итак, если вы используете Ember или какую-либо другую библиотеку JS или Framework, которая объединяется с [] в имени и не использует новейшую Play. К сожалению, это делает маршрут неоднозначным при чтении файла маршрутов, так как вы не можете сказать, что он ожидает значения, но его работы до тех пор, пока Play 2.5 не станет готовой. Вы можете справиться с этим таким образом,

Не обращайте внимание на эту работу. Забыв сохранить файл перед повторной попыткой, я дал мне ложную надежду.

ответ

2

Похоже, что это невозможно в Play 2.4.x. Существует a test in RoutesFileParserSpec.scala, что предполагает, что это возможно:

"parse argument with complex name" in { 
    parseRoute("GET /s p.c.m(`b[]`: List[String] ?= [])").call.parameters must_== Some(Seq(
    Parameter("`b[]`", "List[String]", None, Some("[]")))) 
} 

Но, похоже, вам придется ждать 2.5.x. См. Также эту проблему: https://github.com/playframework/playframework/issues/4693

+0

Обратите внимание, что 2.5.0-M1 доступен https://groups.google.com/forum/#!topic/play-framework/CRWoluub3a8 – Jean

+0

Спасибо, что нашли это и сообщили мне, что он будет поддерживаться в 2.5. И поскольку мой вопрос был специфичен для 2.4, это ответ. Не тот, на который я надеялся, но ответ. Спасибо за помощь. – NarayanJr

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

  • Нет связанных вопросов^_^