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.