我有一个扩展Controller的Play应用程序。
在Play 2.5之前,根据@ Jus12对another SO question的回答,我曾经能够做到以下几点:
import play.api.test._
def getStringFromAction(action: Action[AnyContent]): String = {
val request = new FakeRequest("fakeMethod", "fakeUrl", new FakeHeaders, "fakeBody")
val result = action.apply(request).run
import scala.concurrent.duration._
Helpers.contentAsString(result)(1000 millis)
}
但升级到Play 2.5后,上述代码不再编译。
在这一行:
val result = action.apply(request).run
错误是:
could not find implicit value for parameter materializer: akka.stream.Materializer
not enough arguments for method run: (implicit materializer: akka.stream.Materializer)scala.concurrent.Future[play.api.mvc.Result].
Unspecified value parameter materializer.
我试图找出如何使其发挥作用。
我有一个GET动作可以正常工作。它返回一个Action [AnyContent]。
我遇到了POST操作的问题。 POST操作是Action(parse.json)
,返回Action[JsValue]
。我调用GET操作,它已经知道如何从单独的JAR获取计算的JSON答案,我从GET操作得到Action[AnyContent]
,但现在我需要从结果体中获取String,这样我才能通过Ok(stringValue)
传回来。