Как передать список строк

Используя play framework 2.0 в режиме Java, я хочу передать список строк контроллеру, используя параметры URL.

Учитывая URL-адрес, такой как:

http://localhost:9000/echo?messages=hello&messages=world

Я хочу вызвать метод моего контроллера:

public static Result echo(List<String> messages){
    return ok("Size: " + messages.size());
}

Мой файл маршрутов выглядит так:

GET      /echo             controllers.Application.echo(messages: List[String])

Но это не работает. Я получаю сообщения об ошибках, утверждающих, что для List[String] нет связывателя QueryString. Мне это кажется неправильным, так как это была довольно стандартная функциональность в предыдущей версии. Кто-нибудь знает, как я могу передать список строк контроллеру с помощью проекта Java?


person Louth    schedule 16.03.2012    source источник


Ответы (1)


На данный момент вы можете получить их из строки запроса:

public static Result echo(){
    String[] messages = request().queryString().get("messages");
    return ok("Size: " + messages.length);
}

Обновление: связыватель списка был добавлен, так что вы можете просто написать следующее:

public static Result echo(List<String> messages) {
  return ok("Size:" + messages.size());
}

Убедитесь, что ваше определение маршрута выглядит следующим образом:

GET   /echo      controllers.Application.echo(messages: java.util.List[String])
person Julien Richard-Foy    schedule 17.03.2012