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

mca*_*lle 13 playframework-2.0

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

/照片=标签TAG1,TAG2,TAG3

路线文件:

GET     /photo  controllers.Photos.list(tags:Array[String] ?= "")
Run Code Online (Sandbox Code Playgroud)

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

找不到类型为Array [String]的QueryString绑定器

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

谢谢.

Ahm*_*ani 21

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

这似乎也有效:

This route: http://localhost/controller/{id} 
Run Code Online (Sandbox Code Playgroud)

这个网址: 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-frame/c5kB6wmcF8Q


lex*_*x82 10

使用列表而不是数组应该有效.

如果您使用的是Java,它的工作原理如下:

GET     /photo  controllers.Photos.list(tags: java.util.List[String])
Run Code Online (Sandbox Code Playgroud)


bie*_*ior 9

我认为你应该使用一个共同的String,然后注意将它转换为Array你的controller

路线:

GET     /photo  controllers.Photos.list(tags:String ?= "")
Run Code Online (Sandbox Code Playgroud)

在Java中:

public static Result list (String tags){
    String[] tagsArray = tags.split(",");
    // do something with tagsArray
    return ok();
}
Run Code Online (Sandbox Code Playgroud)

  • 以下@Ahmed Aswani描述的方式是在HTTP中执行此操作的"正确"方法. (4认同)