14

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

/photo?tags=tag1,tag2,tag3

路线文件:

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

我在游戏控制台中遇到了这个错误:

未找到类型 Array[String] 的 QueryString 活页夹

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

谢谢。

4

4 回答 4

23

当值在查询字符串中或发布具有相同名称的数据时,play 将绑定到数组/列表。

这似乎也有效:

This route: http://localhost/controller/{id} 

这个网址:http://localhost/controller/1?id=2&id=3

将绑定到controller(int[] id)where id -> {1, 2, 3}

发布 id=2&id=3 也将绑定到一个数组。

参考: https ://groups.google.com/forum/?fromgroups#!topic/play-framework/c5kB6wmcF8Q

于 2012-07-02T14:13:56.043 回答
11

使用列表而不是数组应该可以。

如果您使用的是 Java,它的工作方式如下:

GET     /photo  controllers.Photos.list(tags: java.util.List[String])
于 2014-11-15T20:21:20.533 回答
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();
}
于 2012-07-02T09:44:20.783 回答
4

顺便说一句,如果您希望传递一个 Long 数组,则可以这样做:

GET /photo controllers.Photos.list(tags: java.util.List[java.lang.Long])

以控制器函数List<Long> tags作为参数。

于 2017-01-05T17:10:47.857 回答