2012-07-06 6 views
7

próbuję definiować trasy z opcjonalnym listy jako parametru zapytaniaZagraj 2,0: Opcjonalna lista w zapytaniu

GET /places controllers.Application.query(filter: Option[Seq[Int]]) 

ale otrzymuję ten błąd

conf/routes - PlayException: Compilation error [`)' expected but `]' found] 

wiem Odtwórz 2 uchwyty Option s cóż, i chcę, aby przekazać Seq do mojego klienta QueryStringBindable, jak to osiągnąć?

Odpowiedz

7

Wygląda na to, że parser routingu w wersji 2.0.2 nie obsługuje parametrów typu zagnieżdżania. Znalazłem obejście, mam zdefiniowany alias Seq[Int]:

type IntSeq = Seq[Int] 

i stosować go zamiast oryginalnego typu:

GET /places controllers.Application.query(filter: Option[IntSeq]) 

Teraz to działa zgodnie z oczekiwaniami.

+0

Gdzie mogę zdefiniować ten typ w moim kodzie? Nie mogę umieścić go w pliku tras ... –

+1

@JacobLyles Możesz zdefiniować go w dowolnym miejscu (z wyjątkiem oczywiście pliku tras), a następnie zaimportować go, podając 'routesImport + =" your.namespace.IntSeq "' in twoja sekcja ustawień 'Build.scala'. – lambdas

+0

Czy nadal ma to miejsce w kolejnych wersjach Play? –