Play(Scala) - AuthenticatedBuilder ... defaultBodyParser ...从哪里得到?

时间:2018-03-28 03:41:35

标签: scala playframework

我正在尝试创建AuthenticatedBuilder对象,我正在努力解决如何提供“defaultBodyParser”字段。

private void call(Object... object) {
   // Method code here.
}

抱怨:“未指定的值参数:defaultBodyParser:BodyParser [AnyContent]”

显然你需要提供这个字段,但目前还不清楚从哪里获取它。我知道Play已经拥有BodyParsers(JSON,XML等)所以...我如何在这里提供它们?

1 个答案:

答案 0 :(得分:0)

事实证明答案是在ScalaDocs本身。不要使用Object,而是使用这样的类:

class UserAuthenticatedBuilder(parser: BodyParser[AnyContent])(implicit ec: ExecutionContext)
  extends AuthenticatedBuilder[User]({ req:RequestHeader =>
    req.headers.get("mytoken").flatMap(authCheck)},
    parser
  ) {

  @Inject()
  def this(parser: BodyParsers.Default)(implicit ec: ExecutionContext) = {
    this(parser: BodyParser[AnyContent])
  }
}

因此,您可以看到使用Play的DI将解析器注入到类中。