【发布时间】:2016-11-15 02:39:42
【问题描述】:
在 Play scala 项目中,我在 Controller 中返回一个对象,其类型为:
play.api.mvc.Action[play.api.libs.json.JsValue 然而,play 抱怨它期待play.api.mvc.Result。根据文档,Action 是一个处理请求并生成结果的函数。
def myController = mySpecialFunction.asyc(prase.tolerantJson) { implicit request => {
for {
... do some stuff ...
} yield {
myFunction()
}
}
}
在这种情况下,myFunction 的返回类型为 play.api.mvc.Action[play.api.libs.json.JsValue。
我想返回一个结果,不知道如何正确调用这个函数
【问题讨论】:
-
通常,操作是您定义为控制器中的顶级函数的内容。 Play 将调用向它传递请求并期望您返回结果的操作。为什么你有一个变量
myController?通常,您有一个代表您的控制器的类,然后是该类中代表操作的一些方法。如果您只想让代码按原样工作,则必须将请求应用于myFunction——但是正如我所说,这看起来很奇怪。 -
如果您可以展示
myFunction在高级别上所做的事情,可能会为您提供更多帮助。正如您自己所说的那样,您的 Action 的设计并没有达到应有的水平。另外,请注意Action.async要求您返回Future[Result]而不仅仅是Result。
标签: scala playframework playframework-2.0