0

我有一个 play2.5 scala 项目,我想从控制器传递一条全局消息,例如以防发生错误。如何在不使用表单全局消息的情况下实现这一点。

例如,在 handleRegisterError 方法中,我想抛出一个全局错误消息,该消息将显示在页面顶部。

最好的方法是什么?

我正在使用旋转模板

 def registerUser = Action.async { implicit request =>

    RegisterForm.form.bindFromRequest.fold(
      formWithErrors => {
        Future.successful(BadRequest(views.html.register(formWithErrors)))
      },
      formData => {
        registerUserService.registerUser(formData).map{ insertedId =>
          Ok(views.html.index(""))
        }
        .recover {
          case cause => handleRegisterError(cause)
        }
      })


  }

  def handleRegisterError(cause: Throwable)(implicit req: RequestHeader) : Result = {         
    cause match {
      case dae: DataAccessException =>
        //add an error message here
        BadRequest(views.html.register(RegisterForm.form))
      case _ =>
        BadRequest(views.html.register(RegisterForm.form))
    }
  }
4

1 回答 1

1

您应该能够使用Redirect附加到Flash范围的消息

Redirect(views.html.register(RegisterForm.form)).flashing("error" -> "Oops, you've got an error")

添加RequestHeader为模板参数并呈现错误消息(如果已定义)。

@(form: Form[RegisterForm])(implicit request: RequestHeader)

@request.flash.get("error").map { message =>
    <div>@message</div>
}
于 2017-01-15T23:06:45.490 回答