我必须在我的Play应用程序中处理以下GET请求。
http://host/somemethod?queries[search]=asdf&perPage=100&sorts[name]=0
现在,通常是GET请求,例如:
http://host/somemethod?queries=asdf&perPage=100&sorts=0
可以很容易地与例如处理。
GET /somemethod controllers.SomeMethodController.getPeople(queries:String ?= "", perPage: Int ?= 10, sorts:String ?= "")
但是诸如
queries[search]=asdf
或sorts[name]=0
之类的参数无法正确解析(尝试使用简单的
String
类型,Seq[String]
或Map[String,String]
-最后一个抛出有关缺少QueryStringBinder
的异常)如何使用Play路由将这些查询参数映射到方法参数?我需要创建自己的自定义
QueryStringBinder
吗? 最佳答案
您的假设是正确的。默认QueryString绑定器不支持地图,因此您应该实现自己的QueryStringBindable
。 Javadoc of QueryStringBindable应该给您提示如何实现它。
Play 2.x支持以下查询字符串参数类型:
串
烧焦
整数
整数(Java)
长(Scala和Java)
Double(Scala和Java)
浮点数(Scala和Java)
布尔值(Scala和Java)
java.util.UUID
选项
可选(Java)
顺序
列表(Scala和Java)
数组
有关所有受支持的类型,请参见Binders.scala。