web-dev-qa-db-fra.com

Comment obtenir les paramètres de chaîne de requête dans le cadre de jeu Java?

Je suis très nouveau dans le framework de jeu Java. J'ai mis en place tous les itinéraires normaux comme/quelque chose /: somthingValue et tous les autres. Maintenant, je veux créer route les paramètres de requête accepte comme 

/ quelque chose? x = 10 & y = 20 & z = 30

Ici, je veux obtenir tous les paramètres après "?" comme clé ==> paire de valeur.

19
Sadik

Vous pouvez câbler vos paramètres de requête dans le fichier de routes:

http://www.playframework.com/documentation/2.0.4/JavaRouting in section "Paramètres avec les valeurs par défaut"

Ou vous pouvez les demander dans votre action:

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

Par exemple, le http://localhost:9000/?a=1&b=2&c=3&c=4 s'imprime sur la console:

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

Notez que c est deux fois dans l'URL.

34
Schleichardt

Dans Play 2.5.x, cela se fait directement dans conf/routes, où on peut mettre les valeurs par défaut:

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

Dans votre cas (lorsque vous utilisez des chaînes)

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

Lorsque vous utilisez une frappe forte:

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

Voir: https://www.playframework.com/documentation/2.5.x/JavaRouting#Parameters-with-default-values ​​ pour une explication plus longue.

16
koppor

Vous pouvez obtenir tous les paramètres de chaîne de requête sous forme de mappe:

Controller.request().queryString()

Cette méthode retourne un objet Map<String, String[]>.

8
Saeed Zarinfam

Vous pouvez utiliser FormFactory :

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

Dans Java/Play 1.x vous les obtenez avec:

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

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