【问题标题】:Play framework asynchronous results播放框架异步结果
【发布时间】:2012-10-21 20:19:13
【问题描述】:

我改变了一个函数:

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

错误消息似乎与方差有关。有谁明白这是怎么回事?

【问题讨论】:

    标签: scala asynchronous playframework playframework-2.0 variance


    【解决方案1】:

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

    如果你让BadRequestOk 返回相同的类型,那么它会起作用。

    尝试做Ok(Html("ok")) - 或者实际渲染一个页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 2016-11-28
      相关资源
      最近更新 更多