java playframework playframework-2.0 request.querystring

¿Cómo obtener parámetros de cadena de consulta en java play framework?



playframework playframework-2.0 (5)

Soy muy nuevo en el framework java play. He configurado todas las rutas normales como / algo /: somthingValue y todas las demás. Ahora quiero crear la ruta acepta los parámetros de consulta como

/ algo? x = 10 & y = 20 & z = 30

Aquí quiero obtener todos los parámetros después de "?" como clave ==> par de valores.


En Java/Play 1.x obtienes con:

Request request = Request.current(); String arg1 = request.params.get("arg1"); if (arg1 != null) { System.out.println("-----> arg1: " + arg1); }


En Play 2.5.x, se hace directamente en conf/routes route, donde se pueden poner valores predeterminados:

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

En tu caso (cuando usas cuerdas)

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

Cuando se utiliza la escritura fuerte:

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

Consulte: https://www.playframework.com/documentation/2.5.x/JavaRouting#Parameters-with-default-values para obtener una explicación más detallada.


Puede conectar sus parámetros de consulta al archivo de rutas:

http://www.playframework.com/documentation/2.0.4/JavaRouting en la sección "Parámetros con valores predeterminados"

O puedes pedirlos en tu Acción:

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

Por ejemplo, http://localhost:9000/?a=1&b=2&c=3&c=4 imprime en la consola:

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

Tenga en cuenta que c es dos veces en la url.


Puede obtener todos los parámetros de cadena de consulta como un Mapa:

Controller.request().queryString()

Este método devuelve un objeto Map<String, String[]> .


Puede utilizar FormFactory :

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