播放框架异步结果

时间:2012-10-21 20:19:14

标签: scala asynchronous playframework playframework-2.0 variance

我改变了一个函数:

def submit = Action { request =>
  signupForm.bindFromRequest()(request).fold(
    // Form has errors
    errors => BadRequest(html.signup.form(errors)),

    // We got a valid User value, display the summary
    user => {
      // intensive computation involving database
      Ok("okay")
    }
  )
}

def submit = Action { request =>
  val result = Akka.future {
    signupForm.bindFromRequest()(request).fold(
      // Form has errors
      errors => BadRequest(html.signup.form(errors)),

      // We got a valid User value, display the summary
      user => {
        // intensive computation involving database
        Ok("okay")
      }
    )
  }
  Async {
    result
  }
}

我得到编译错误:

[error]  found   : play.api.mvc.SimpleResult[_ >: java.lang.String with play.api.templates.Html <: java.io.Serializable]
[error]  required: play.api.mvc.SimpleResult[_1(in value result)] where type _1(in value result) >: java.lang.String with play.api.templates.Html <: java.io.Serializable
[error] Note: java.io.Serializable >: _1, but class SimpleResult is invariant in type A.
[error] You may wish to define A as -A instead. (SLS 4.5)
[error]       signupForm.bindFromRequest()(request).fold(
[error]                                                 ^
[error] one error found

错误消息似乎与方差有关。有谁知道发生了什么?

1 个答案:

答案 0 :(得分:1)

BadRequest正在返回类型SimpleResult[Html]
Ok正在返回SimpleResult[String]

类型

如果您使BadRequestOk返回相同的类型,则可以使用。

尝试执行Ok(Html("ok")) - 或实际渲染页面。

相关问题