5

我有一个简单的模型对象:

case class Region(id: String, revision: Option[String], name: String)

object Region {        
    // Returns Some(region) if successful, None if revision doesn't match the latest
    // in the data store
    def insertOrUpdate(region: Region): Promise[Option[Region]]
}

在我的控制器中,我想做这样的事情,但我不知道如何在响应中指示锁定失败。我想添加一个全局表单错误,但无法从 API 中看到。

def update(id: String) = Action {
    implicit request => regionForm.bindFromRequest.fold(
        formWithErrors => BadRequest(views.html.regions.edit(formWithErrors)),        
        region => Async{
            Region.insertOrUpdate(region).map{
                _ match {
                    case None => {
                    // How do I add a global form error indicating there were server side changes detected
                        BadRequest(views.html.regions.edit(regionForm.fill(region))
                    }
                    case Some(r) => Redirect(views.html.regions.index).flashing(("success", "Update successful")
            }
        }
    )
}
4

1 回答 1

11

玩 2.0.4

全局错误实际上是没有键的错误(参见globalErrors方法)。

没有帮助添加错误,但你可以自己做,像这样:

regionForm.fill(region)
  .copy(errors = FormError("", "Your Error Message") +: errors)

玩 2.1

您可以使用以下withGlobalError方法:

regionForm.fill(region)
  .withGlobalError("Your error message")))
于 2013-01-05T13:02:24.820 回答