Подтвердить что ты не робот

Как получить параметры строки запроса в java play framework?

Я очень новичок в java play framework. Я установил все обычные маршруты, как /something/: somthingValue и все остальные. Теперь я хочу создать маршрут для параметров запроса accept, например

/что-то х = 10 &? У = 20 & г = 30

Здесь я хочу получить все параметры после "?" как ключ == > пара значений.

4b9b3361

Ответ 1

Вы можете подключить параметры запроса к файлу маршрутов:

http://www.playframework.com/documentation/2.0.4/JavaRouting в разделе "Параметры со значениями по умолчанию"

Или вы можете попросить их в своем действии:

public class Application extends Controller {

    public static Result index() {
        final Set<Map.Entry<String,String[]>> entries = request().queryString().entrySet();
        for (Map.Entry<String,String[]> entry : entries) {
            final String key = entry.getKey();
            final String value = Arrays.toString(entry.getValue());
            Logger.debug(key + " " + value);
        }
        Logger.debug(request().getQueryString("a"));
        Logger.debug(request().getQueryString("b"));
        Logger.debug(request().getQueryString("c"));
        return ok(index.render("Your new application is ready."));
    }
}

Например, http://localhost:9000/?a=1&b=2&c=3&c=4 печатает на консоли:

[debug] application - a [1]
[debug] application - b [2]
[debug] application - c [3, 4]
[debug] application - 1
[debug] application - 2
[debug] application - 3

Обратите внимание, что c - два раза в URL.

Ответ 2

В Play 2.5.x он выполняется непосредственно в conf/routes, где можно установить значения по умолчанию:

# Pagination links, like /clients?page=3
GET   /clients              controllers.Clients.list(page: Int ?= 1)

В вашем случае (при использовании строк)

GET   /something            controllers.Somethings.show(x ?= "0", y ?= "0", z ?= "0")

При использовании сильного ввода:

GET   /something            controllers.Somethings.show(x: Int ?= 0, y: Int ?= 0, z: Int ?= 0)

См. https://www.playframework.com/documentation/2.5.x/JavaRouting#Parameters-with-default-values для более подробного объяснения.

Ответ 3

Вы можете получить все параметры строки запроса в виде Карты:

Controller.request().queryString()

Этот метод возвращает объект Map<String, String[]>.

Ответ 4

В Java/Play 1.x вы получите их с помощью:

    Request request = Request.current();
    String arg1 = request.params.get("arg1");

    if (arg1 != null) {
        System.out.println("-----> arg1: " + arg1);
    } 

Ответ 5

Вы можете использовать FormFactory:

DynamicForm requestData = formFactory.form().bindFromRequest();
String firstname = requestData.get("firstname");