我正在使用Ember.js和Play播放单个网页应用,并将Play作为API。 Ember合并了这样的请求,?ids[]=401460&ids[]=379610
。但是当我尝试在Play的路径文件中处理该值时,它实际上期望值为ids[]
而不是ids
。但是我无法告诉路由文件查找ids[]
,因为它会在[
上抛出错误。我已经尝试过使用像我在scala代码本身`ids[]`
中那样的返回刻度,但是这又会在routes文件中抛出错误。
是否可以在路线文件中执行此操作?
GET /api/test controllers.application.getTests(ids[]:List[Long])
我知道我可以这样管理它,
Map<String,String[]> params = request().body().asFormUrlEncoded();
但我更愿意让Play执行它的操作并在路径文件中处理它然后关闭值。
这是完全可能还是使用asFormUrlEncoded
处理它的唯一选项?
更新(解决最小变化)
别介意这项工作。在重新尝试之前忘记保存文件给了我一些错误的希望。
答案 0 :(得分: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