0
私はplay2.5 scalaプロジェクトを持っています。たとえば、エラーが発生した場合など、コントローラからグローバルメッセージを渡したいとします。フォームのグローバルメッセージを使わずにこれをどうすれば実現できますか?scala play2.5グローバルメッセージをテンプレートに渡す方法
たとえば、handleRegisterErrorメソッドでは、ページ外の上部に表示されるグローバルエラーメッセージをスローしたいと思います。
これにはどのような方法が最適ですか?
私はあなたがテンプレートパラメータとしてRequestHeader
を追加した場合、エラーメッセージをレンダリングFlash
範囲
Redirect(views.html.register(RegisterForm.form)).flashing("error" -> "Oops, you've got an error")
に添付されたメッセージでRedirect
を使用することができるはずトワールテンプレートに
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))
}
}
リダイレクトしたくない場合はどうすればよいですか? – simonC
まあ、どんなオブジェクトでもTwirlテンプレートに渡すことができます – yahor
これは私が最後に実装した方法ですが、このようなものがすでに組み込まれていれば放浪していました...とにかくinfoのtnx – simonC