Playframework 获取一个url参数的数组
我想获取url参数ID,但它不会工作。这里有能帮我的人吗? 以下代码不起作用 网址: Routes.confPlayframework 获取一个url参数的数组,playframework,routes,playframework-2.0,Playframework,Routes,Playframework 2.0,我想获取url参数ID,但它不会工作。这里有能帮我的人吗? 以下代码不起作用 网址: Routes.conf GET /restws/alerts{ids} controllers.AlertService.findAlertsForIds(ids: List[String]) AlertService.java public static Result findAlertsForIds(List<String> ids){ return ok("Coole Sache");
GET /restws/alerts{ids} controllers.AlertService.findAlertsForIds(ids: List[String])
AlertService.java
public static Result findAlertsForIds(List<String> ids){
return ok("Coole Sache");
}
公共静态结果findAlertsForIds(列表ID){
返回ok(“Coole Sache”);
}
尝试将ID作为字符串传递,如下所示
http://:9000/rest/alerts?ids=123456789
然后通过对字符串应用split()函数来获取数组
希望对您有所帮助。这种参数绑定与查询字符串参数一起使用是现成的 您的路线必须按以下方式申报:
GET /restws/alerts controllers.AlertService.findAlertsForIds(ids: List[String])
您的URL应遵循以下模式:
http://localhost:9000/rest/alerts?ids=123&ids=456
简而言之,你有很多选择。。。都有点不同。可以使用以下URL格式:
/foo/bar?颜色=红色&颜色=蓝色
/foo/bar?颜色=红色,蓝色
/foo/bar?颜色=[红色,蓝色]
/foo/bar?颜色[]=红色、蓝色
// form definition
case class ColorParams(colors:Seq[String])
val myForm = Form(formMapping(
"color" -> seq(text(1, 32)))(ColorParams.apply)(ColorParams.unapply)
// in your controller method call
val params = myForm.bindFromRequest()
示例URL:/foo/bar?颜色[]=红色、蓝色
将成为列表(“红色”、“蓝色”)
遗憾的是,这并没有那么健壮,因为许多API使用的格式是color=red,blue
或color=red&color=blue
2.创建自己的自定义查询字符串解析器
更详细,但您可以编写约束、测试,并将所有内容留给路由器。亲是,无效的查询永远不会到达您的控制器
然后您只需在Routes文件中使用它,如:
case class ColorParams(colors:List[MyColorEnum])
GET/foo/bar?controllers.Example.getBar(颜色:ColorParams)
示例URL:/foo/bar?颜色=红色,蓝色
因为您自己正在解析字符串,所以可以使用此方法在本文中根据需要使用任何字符串布局。有关详细信息,请参阅。稍后我将添加一个完整的示例
3.在Routes文件中定义阵列参数
GET/foo/bar?controllers.Example.getBar(颜色:Seq[String])
示例URL:/foo/bar?颜色=红色&颜色=蓝色
注意:为了清晰起见,我在Routes文件中使用了color
,这是URL中的名称,但在getBar
方法中使用了colors
。这些名称不必匹配,只需匹配类型即可
戈查斯
注意这可能很棘手,因为/foo/bar?color=red,blue
变为Seq('red,blue'),即一个字符串的Seq,不是两个字符串的Seq,但它仍将在调试器中显示为Seq(red,blue)
。在调试器中可以看到的正确值是Seq(红色,蓝色)
,注意到空格了吗?棘手。玩2.5:
//http://localhost:9000/myview?option=qwer=5&option=pass&option=43,56&其他选项=5
类MyController扩展控制器{
def myview()=操作{隐式请求=>
println(request.queryString)
返回:
Map(选项->缓冲区(qwer=5,pass,43,56),otherOption->Buffer(5))
case class ColorParams(colors:List[MyColorEnum])
// inside Example.scala
def getBar( colors:Seq[String] ) = {
???
}