playframework-2.0

playframework 2.0 - Request.params se ha ido en Play Framework 2.0



playframework-2.0 (2)

La documentación de Play 2.0 no explica esto muy bien. Los analizadores corporales son una solución aceptable, pero he encontrado que DynamicForm es mucho más liviano y fácil de usar.

La documentación se puede encontrar here .

En particular, DynamicForm.bindFromRequest() es un buen lugar para comenzar si está intentando reemplazar el antiguo Play 1.0 request.params.get() .

¿Hay alguna manera de acceder a todos los parámetros de solicitud, independientemente del método HTTP? He revisado la documentación y la API sin encontrar una forma en Play Framework 2.0.

Tengo una búsqueda en un sitio que acepta POST y GET. El seguimiento personalizado en el sitio examina todos los parámetros pasados ​​para determinar la forma correcta de almacenar datos de seguimiento.

En Play Framework 1.2.x, pude acceder a los parámetros de una solicitud en un Controlador con

request.params.get("keywords") request.params.get("location") request.params.all()

Con Play Framework 2.0, este ya no es el caso. La Request ya no tiene el método params , solo queryString y queryString solo funcionan con GET y no con POST.

No es factible definir cada parámetro de seguimiento posible en la Acción del controlador, son dinámicos.

ACTUALIZACIÓN : Un posible cambio está utilizando Body Parsers .

Dependiendo del tipo de contenido de la solicitud, se utiliza el analizador apropiado, por ejemplo, application / form-url-encoded versus application / json

Este es el Mapa crudo que combina los parámetros POST y los parámetros GET, con los parámetros GET tomando precedencia.

val params: collection.mutable.Map[String, Seq[String]] = collection.mutable.Map() params ++= request.body.asFormUrlEncoded.getOrElse[Map[String, Seq[String]]] { Map.empty } params ++= request.queryString


ctx()._requestHeader().getQueryString("q").get();

esto no requiere ninguna importación adicional y debería funcionar directamente desde el controlador bootstrapped.