有什么方法可以访问所有请求参数,而不管HTTP方法如何?我没有在Play Framework 2.0中找到方法,而是浏览了文档和api。

我在接受POST和GET的网站上进行搜索。该站点上的自定义跟踪将检查所有传入的参数,以确定存储跟踪数据的正确方法。

在Play Framework 1.2.x中,我能够使用以下命令从Controller中的请求访问参数

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

有了Play Framework 2.0,情况就不再如此。 Request不再具有params方法,仅queryString和queryString仅适用于GET而不适用于POST。

在 Controller Action 中定义每个可能的跟踪参数是不可行的,因为它们是动态的。

更新:可能的解决方法是使用Body Parsers

根据请求的内容类型,使用适当的解析器,例如application / form-url-encoded vs application / json

这是结合了POST参数和GET参数,而GET参数优先的粗略Map。

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

最佳答案

Play 2.0文档不能很好地解释这一点。正文解析器是可以接受的解决方案,但我发现DynamicForm更加轻巧且用户友好。

该文档可以在here中找到。

特别是,如果您想替换旧的Play 1.0 DynamicForm.bindFromRequest()request.params.get()是一个不错的起点。

关于playframework-2.0 - 在Play Framework 2.0中,Request.params消失了,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9808348/

10-16 15:54