播放框架2:在路由中使用Array [String]

时间:2012-07-02 09:38:35

标签: playframework-2.0

我想生成一个这样的网址:

  

/照片标记= TAG1,TAG2,TAG3

路线档案:

GET     /photo  controllers.Photos.list(tags:Array[String] ?= "")

我在播放控制台中遇到了这个错误:

  

找不到类型为Array [String]

的QueryString绑定器

实现这一目标的最佳方法是什么?

感谢。

4 个答案:

答案 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为参数。