2013-04-09 12 views
19

Jestem bardzo nowy w ramach java play. Ustawiłem wszystkie normalne trasy takie jak/something /: somthingValue i wszystkie inne. Teraz chcę utworzyć Poprowadź akceptuje parametry zapytania jakJak uzyskać parametry ciągu zapytania w strukturze Java?

/coś? X = 10 y = 20 & & z = 30

Tutaj chcę uzyskać wszystkie params po "?" jako klucz ==> para wartości.

Odpowiedz

32

można podłączyć w twoich parametrów kwerendy do pliku trasach:

http://www.playframework.com/documentation/2.0.4/JavaRouting w sekcji „Parametry z wartościami domyślnymi”

Albo można poprosić o nich w swoim działaniu:

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.")); 
    } 
} 

Na przykład http://localhost:9000/?a=1&b=2&c=3&c=4 drukuje na konsoli:

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

Pamiętaj, że c jest dwa razy w adresie URL.

+0

nie jestem w stanie dostrzec metodę getQueryString() żądania(). czy to dlatego, że używam wersji 2.0 i używam wersji 2.0.4? – Sadik

+0

Masz rację, http://www.playframework.com/documentation/api/2.0/java/play/mvc/Http.Request.html nie zawiera getQueryString(), ale request(). QueryString() może dać ci wszystko potrzebujesz. – Schleichardt

+0

Wielkie dzięki. czy możesz zaproponować mi kilka dobrych tutoriali na ten temat? Tylko że to dokumentacja. – Sadik

7

można uzyskać wszystkie parametry ciągu kwerendy jako mapą:

Controller.request().queryString() 

Ta metoda zwraca Map<String, String[]> obiekt.

0

W Java/Play 1.x je uzyskać z:

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

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

In Play 2.5.x, jest dokonywana bezpośrednio w conf/routes, gdzie można umieścić wartości domyślne:

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

W twoim przypadku (gdy za pomocą ciągów)

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

Podczas używania silnego pisania:

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

Zobacz: https://www.playframework.com/documentation/2.5.x/JavaRouting#Parameters-with-default-values, aby uzyskać więcej informacji.

0

Można użyć FormFactory:

DynamicForm requestData = formFactory.form().bindFromRequest(); 
String firstname = requestData.get("firstname"); 
Powiązane problemy