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.
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.
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.
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[]>
.
Vous pouvez utiliser FormFactory :
DynamicForm requestData = formFactory.form().bindFromRequest();
String firstname = requestData.get("firstname");
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);
}