在 play 框架 scala 中使用 ActionFilter 编写 Action(BodyParser)

Composing Action(BodyParser) with ActionFilter in play framework scala

提问人:kag0 提问时间:5/9/2017 更新时间:5/9/2017 访问量:893

问:

我有一个游戏框架应用程序和一个有问题的操作。我正在尝试使用解析请求正文,然后对解析的正文进行运行。parse.formActionFilter

到目前为止,我有这样的东西

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

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

但是IDEA给了我错误提示

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

编译器告诉我

...缺少 trait ActionBuilder
中方法应用的参数列表 [error] 仅当需要函数类型时,未应用的方法才会转换为函数。 [错误]您可以通过编写 or 代替 来显式此转换。
apply _apply(_)(_)apply

因此,我可以收集到问题出在第二个参数列表未被填充这一事实的方法上,但我不知道该语言在这里的行为方式。apply[A](bodyParser: BodyParser[A])(block: R[A] => Result): Action[A]

我(完全没有根据的)假设是,这将成为并且调用将返回相同的结果。Action(parse.form(myModelForm))Request[MyModel] => ResultandThen

关于我错过了什么,有什么指示吗?谢谢!

scala playframework-2.0 函数组合

评论

0赞 Callum M 4/3/2020
你有没有深入了解过这个问题?
0赞 Callum M 4/3/2020
我有一个非常相似的问题,除了我想做异步。为此,解决方案是这样的:。我希望它在这里也会非常相似,但我不确定它到底是如何映射的。Action.andThen(ModelValidationAction).async(parse.json) { ??? }

答: 暂无答案