如何从Play 2.5 Action [AnyContent]中提取结果字符串?

时间:2017-06-01 17:20:02

标签: scala playframework playframework-2.5

我有一个扩展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)传回来。

0 个答案:

没有答案