我必须在我的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
?
答案 0 :(得分:1)
你的假设是正确的。默认的QueryString绑定器不支持映射,因此您应该实现自己的QueryStringBindable
。 Javadoc of QueryStringBindable应该给你一个如何实现它的提示。
Play 2.x支持以下查询字符串参数类型:
有关所有支持的类型,请参阅Binders.scala。