19

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

/что-то? Х = 10 у = г = 30

Здесь я хочу, чтобы получить все Params после «?» как ключ ==> пара значений.

ответ

32

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

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-адресе.

+0

Я не в состоянии увидеть метод getQueryString() запроса(). это потому, что я использую play 2.0, и вы используете 2.0.4? – Sadik

+0

Вы правы, http://www.playframework.com/documentation/api/2.0/java/play/mvc/Http.Request.html не содержит getQueryString(), а request(). QueryString() может дать вам все тебе нужно. – Schleichardt

+0

Спасибо большое. можете ли вы предложить мне несколько хороших уроков? Кроме документации. – Sadik

7

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

Controller.request().queryString() 

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

0

В Java/Play 1.x вы получаете их:

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

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

В 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 для более подробного объяснения.

0

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

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