我有以下路线,它接受一组可选参数:
GET /data com.controllers.MyController.data(ids: Option[Seq[Long]])
编译项目时,出现以下错误:
[warn] ivyScala := ivyScala.value map { _.copy(overrideScalaVersion = true) }
[warn] Run 'evicted' to see detailed eviction warnings
[error] (compile:managedSources) @6plhijkoi: Compilation error in /Users/joe/projects/my-project/conf/routes:26
[error] Total time: 5 s, completed Apr 12, 2016 12:03:55 PM
我的路线文件中的第26行正是我上面发布的。有关为什么会出现此错误的任何想法?是否不可能有一个可选的Seq参数?目标是为以下方法建立一条路线:
localhost:9000/data - should fetch all the data
localhost:9000/data?id=1&id=2 - should fetch data with id 1 and 2
localhost:9000/data?id=1 - should fetch data with id 1
有什么建议吗?
答案 0 :(得分:1)
我弄清楚问题是什么,以及我是如何设法让它发挥作用的:
GET /data com.controllers.MyController.data(ids: List[Long])
注意数据类型,我将类型从Seq改为List,我不需要Option。所以电话会变成:
/data?ids=1&ids=2 - filters based on id 1 and 2
/data - gets me all the data
答案 1 :(得分:0)
它可能不知道如何处理Option[Seq[Long]]
你可以有这样的路由器:
GET /data com.controllers.MyController.data(id1: Option[Long], id2: Option[Long])
然后在控制器中处理None
值。