2013-01-05 12 views
5

我有一个简单的模型对象:如何添加一个全球性的形状误差玩2.0的形式表示乐观锁失败

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") 
      } 
     } 
    ) 
} 

回答

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"))) 
+1

这正是我所期待的。谢谢 – Brian

+0

很抱歉忘记标记为已回答。有你去:) – Brian