Play Framework Routes 中的 Scala 反引号
Posted
技术标签:
【中文标题】Play Framework Routes 中的 Scala 反引号【英文标题】:Scala backticks in Play Framework Routes 【发布时间】:2015-12-16 03:10:16 【问题描述】:我正在使用 Ember.js 和 Play 作为 API 的单页 Web 应用程序。 Ember 合并这样的请求,?ids[]=401460&ids[]=379610
。但是当我尝试在 Play 的路由文件中处理该值时,它实际上期望该值为ids[]
而不是ids
。但我不能告诉路由文件寻找ids[]
,因为它会在[
上引发错误。我曾尝试像在 scala 代码本身 `ids[]`
中那样使用反引号,但这又会在路由文件中引发错误。
是否可以在路由文件中执行此操作?
GET /api/test controllers.application.getTests(ids[]:List[Long])
我知道我可以这样处理,
Map<String,String[]> params = request().body().asFormUrlEncoded();
但我更愿意让 Play 做它的事情并在路由文件中处理它,然后将值传递出去。
这完全可能还是使用asFormUrlEncoded
处理它的唯一选项?
更新:(以最少的更改解决)
别管那个变通了。在重试之前忘记保存文件给了我一些虚假的希望。
【问题讨论】:
【参考方案1】:这在 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
【讨论】:
请注意,2.5.0-M1 可用groups.google.com/forum/#!topic/play-framework/CRWoluub3a8 感谢您发现它并告诉我它将在 2.5 中得到支持。由于我的问题是针对 2.4 的,这就是答案。不是我所希望的,而是答案。感谢您的帮助。以上是关于Play Framework Routes 中的 Scala 反引号的主要内容,如果未能解决你的问题,请参考以下文章
如何将外部Javascript文件链接到Play Framework项目中的html文档?
Play Framework [2.4.x] - 模块路由特定名称因“资产不是包的成员”而失败
Play Framework & IntelliJ - 无法解析符号索引/路由