在Play框架Scala中使用ActionFilter组合Action(BodyParser)

kag*_*ag0 5 scala function function-composition playframework playframework-2.0

我有一个Play框架应用程序和一个有问题的操作。我试图使用解析一个请求正文parse.form,然后ActionFilter对该解析的正文进行运行。

到目前为止,我有这样的事情

object ModelValidationAction extends ActionFilter[Request[MyModel]]{
  def filter[A <: MyModel](request: Request[A]) = ???
}

def routePointsHere = (Action(parse.form(myModelForm)) andThen ModelValidationAction) { (request: Request[MyModel]) => ??? }
Run Code Online (Sandbox Code Playgroud)

但是IDEA给我错误提示

预期的Action [MyModel] => NotInferredA,实际的ModelValidationAction.type

编译器告诉我

...在特征ActionBuilder中应用的方法缺少参数列表
[错误]仅当需要函数类型时,才会将未应用的方法转换为函数。[错误]您可以通过写入apply _apply(_)(_)代替来明确显示此转换apply

因此,我可以了解到问题是apply[A](bodyParser: BodyParser[A])(block: R[A] => Result): Action[A]围绕第二个参数列表未填充的方法,但是我不知道该语言在这里的行为。

我的(完全没有根据的)的假设是,Action(parse.form(myModelForm))将成为Request[MyModel] => Result和调用andThen将返回相同的。

关于我所缺少的任何指针?谢谢!