Playframework 2.0 播放框架2:在路由中使用数组[String]
我想生成如下url:Playframework 2.0 播放框架2:在路由中使用数组[String],playframework-2.0,Playframework 2.0,我想生成如下url: GET /photo controllers.Photos.list(tags: java.util.List[String]) /照片?标签=标签1、标签2、标签3 路由文件: GET /photo controllers.Photos.list(tags:Array[String] ?= "") 我在play console中发现以下错误: 找不到类型数组[String]的QueryString绑定器 实现这一目标的最佳方式是什么 谢谢。我认为您
GET /photo controllers.Photos.list(tags: java.util.List[String])
/照片?标签=标签1、标签2、标签3
路由文件:
GET /photo controllers.Photos.list(tags:Array[String] ?= "")
我在play console中发现以下错误:
找不到类型数组[String]的QueryString绑定器
实现这一目标的最佳方式是什么
谢谢。我认为您应该使用一个通用的
字符串
,然后注意将其转换为控制器中的数组
路线:
GET /photo controllers.Photos.list(tags:String ?= "")
在Java中:
public static Result list (String tags){
String[] tagsArray = tags.split(",");
// do something with tagsArray
return ok();
}
当值在查询中时,play将绑定到数组的/列表
字符串或具有相同名称的post数据
这似乎也可行:
This route: http://localhost/controller/{id}
此url:http://localhost/controller/1?id=2&id=3
将绑定到控制器(int[]id)
其中id->{1,2,3}
过帐id=2&id=3也将绑定到数组
参考:
使用列表而不是数组应该可以
如果您使用的是Java,它的工作原理如下:
GET /photo controllers.Photos.list(tags: java.util.List[String])
顺便说一句,如果您希望传递一组long,则以下操作有效:
GET/photo controllers.Photos.list(标记:java.util.list[java.lang.Long])
控制器函数将列表标签作为参数。这是我的第一个想法。我将使用此解决方案。下面@Ahmed Aswani描述的方法是在HTTP中执行此操作的“正确”方法。在查询参数中执行数组的正确方法(无论框架如何)据我所知,实际上是这样的/photo?tags=tag1&tags=tag2&tags=tag3…有点冗长,但规范允许重复,我已经搜索了几个小时了!事实证明,您不能只使用List[String]。默认情况下,它将使用scala类型!将出现以下异常!类型失配;found:List[String](在scala.collection.immutable中)required:List[_](在java.util中)使用完整的包名是正确的方法