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

Использование 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-проекта?

Ответы

Ответ 1

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

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

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

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

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

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