2016-04-12 13 views
2

Ich habe folgende Route, die in einem optionalen Satz von Parametern nimmt:Play-Framework-Fehler in Routes Datei

GET /data com.controllers.MyController.data(ids: Option[Seq[Long]]) 

Als ich das Projekt kompilieren, erhalte ich folgende Fehlermeldung:

[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 

Linie Nummer 26 in meiner Routes-Datei ist genau das, was ich oben gepostet habe. Irgendwelche Ideen, warum dieser Fehler auftritt? Ist es nicht möglich, eine optionale Seq von Parametern zu haben? Das Ziel ist, einen Weg für die folgenden haben:

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 

Irgendwelche Vorschläge?

Antwort

0

ich herausgefunden, was das Problem ist, und hier ist, wie ich es Arbeit bekommen verwaltet:

GET /data com.controllers.MyController.data(ids: List[Long]) 

Beachten Sie den Datentyp, ich die Art von Seq geändert Liste und ich die Option nicht benötigen. So würden die Anrufe werden:

/data?ids=1&ids=2 - filters based on id 1 and 2 
/data    - gets me all the data 
+0

Wenn Sie darüber nachdenken, ist eine leere Liste Ihre keine Option (eine Art). – mfirry

+0

Ja, Sie haben Recht. Bei meinem Ansatz muss ich in meinem Controller nicht nach der Bedingung None suchen! – sparkr

0

Es kann nicht wissen, wie ein Option[Seq[Long]]

zu handhaben Sie einen Router als solche haben könnten:

GET /data com.controllers.MyController.data(id1: Option[Long], id2: Option[Long])

Dann None Werte in Ihrem Controller behandeln.

Verwandte Themen