Play framework 2: используйте Array [String] в маршруте
Я хочу создать такой URL-адрес:
/фото? Теги = tag1, tag2 tag3
файл маршрута:
GET /photo controllers.Photos.list(tags:Array[String] ?= "")
Я получил эти ошибки в консоли воспроизведения:
Нет строкового связывания QueryString для типа Array [String]
Каков наилучший способ достичь этого?
Спасибо.
Ответы
Ответ 1
Я думаю, что вы должны использовать общий String
, а затем позаботиться о преобразовании его в Array
в свой controller
маршруты:
GET /photo controllers.Photos.list(tags:String ?= "")
в Java:
public static Result list (String tags){
String[] tagsArray = tags.split(",");
// do something with tagsArray
return ok();
}
Ответ 2
play будет связываться с массивами/списками, когда значения находятся в запросе
строковые или почтовые данные с тем же именем.
это также работает:
This route: http://localhost/controller/{id}
Этот URL: http://localhost/controller/1?id=2&id=3
Будет привязан к controller(int[] id)
, где id → {1, 2, 3}
публикация id = 2 & id = 3 также связывается с массивом.
ссылка:
https://groups.google.com/forum/?fromgroups#!topic/play-framework/c5kB6wmcF8Q
Ответ 3
Использование списка вместо массива должно работать.
Если вы используете Java, он работает следующим образом:
GET /photo controllers.Photos.list(tags: java.util.List[String])
Ответ 4
В стороне, если вы хотите передать массив Longs, это работает:
GET /photo controllers.Photos.list(tags: java.util.List[java.lang.Long])
с функцией контроллера, принимающей List<Long> tags
в качестве аргумента.