在Routes文件中播放框架错误

时间:2016-04-12 10:09:25

标签: scala playframework

我有以下路线,它接受一组可选参数:

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

有什么建议吗?

2 个答案:

答案 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值。