我必须在我的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]=asdfsorts[name]=0之类的参数无法正确解析
(尝试使用简单的String类型,Seq[String]Map[String,String]-最后一个抛出有关缺少QueryStringBinder的异常)

如何使用Play路由将这些查询参数映射到方法参数?我需要创建自己的自定义QueryStringBinder吗?

最佳答案

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

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



烧焦
整数
整数(Java)
长(Scala和Java)
Double(Scala和Java)
浮点数(Scala和Java)
布尔值(Scala和Java)
java.util.UUID
选项
可选(Java)
顺序
列表(Scala和Java)
数组


有关所有受支持的类型,请参见Binders.scala

10-04 12:17
查看更多