我想生成一个这样的网址:
/照片标记= TAG1,TAG2,TAG3
路线档案:
GET /photo controllers.Photos.list(tags:Array[String] ?= "")
我在播放控制台中遇到了这个错误:
找不到类型为Array [String]
的QueryString绑定器
实现这一目标的最佳方法是什么?
感谢。
答案 0 :(得分:20)
play将绑定到数组/列表 字符串或发布具有相同名称的数据。
这似乎也有效:
This route: http://localhost/controller/{id}
此网址:http://localhost/controller/1?id=2&id=3
将绑定到controller(int[] id)
,其中id - > {1,2,3}
发布id = 2& id = 3也将绑定到数组。
参考: https://groups.google.com/forum/?fromgroups#!topic/play-framework/c5kB6wmcF8Q
答案 1 :(得分:10)
使用列表而不是数组应该可行。
如果您使用的是Java,它的工作原理如下:
GET /photo controllers.Photos.list(tags: java.util.List[String])
答案 2 :(得分:9)
我认为您应该使用共同的String
,然后注意将其转换为Array
controller
路线:
GET /photo controllers.Photos.list(tags:String ?= "")
Java中的:
public static Result list (String tags){
String[] tagsArray = tags.split(",");
// do something with tagsArray
return ok();
}
答案 3 :(得分:3)
顺便说一句,如果你希望传递一个Longs数组,这可以工作:
GET /photo controllers.Photos.list(tags: java.util.List[java.lang.Long])
控制器函数以List<Long> tags
为参数。