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

Play 2.0.4 の場合

グローバル エラーは、実際にはキーのないエラーです (globalErrorsメソッドを参照)。

エラーを追加するヘル​​パーはありませんが、次のような方法で自分で行うことができます。

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

Play 2.1 の場合

withGlobalError次の方法を使用できます。

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