有什么方法可以访问所有请求参数,而不管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/