Playframework 如何使用Play在GET请求中路由map-like参数

Playframework 如何使用Play在GET请求中路由map-like参数,playframework,playframework-2.0,Playframework,Playframework 2.0,我必须在我的游戏应用程序中处理以下GET请求 http://host/somemethod?queries[search]=asdf&perPage=100&sorts[name]=0 现在,通常会收到如下请求: http://host/somemethod?queries=asdf&perPage=100&sorts=0 可以很容易地处理 GET /somemethod controllers.SomeMethodControlle

我必须在我的游戏应用程序中处理以下GET请求

http://host/somemethod?queries[search]=asdf&perPage=100&sorts[name]=0 
现在,通常会收到如下请求:

http://host/somemethod?queries=asdf&perPage=100&sorts=0
可以很容易地处理

GET         /somemethod     controllers.SomeMethodController.getPeople(queries:String ?= "", perPage: Int ?= 10, sorts:String ?= "")
但是像:
查询[search]=asdf
排序[name]=0
这样的参数没有正确解析 (尝试了简单的
String
类型、
Seq[String]
Map[String,String]
-最后一个引发有关缺少
QueryStringBinder
的异常)


如何将这些查询参数映射到具有播放路由的方法参数?我是否需要创建自己的自定义
QueryStringBinder

您的假设是正确的。默认的QueryString绑定器不支持映射,因此您应该实现自己的
QueryStringBindable
。应该给您一个如何实现它的提示

Play 2.x支持以下查询字符串参数类型:

  • 煤焦
  • Int
  • 整数(Java)
  • 长(Scala和Java)
  • Double(Scala和Java)
  • 浮点(Scala和Java)
  • 布尔(Scala和Java)
  • java.util.UUID
  • 选择权
  • 可选(Java)
  • 序号
  • 列表(Scala和Java)
  • 排列
有关所有支持的类型,请参阅