Play Framework 控制器中的通用操作
Generic Action in Play Framework controller
我网站的两个页面上都有申请表:关于我们和联系方式。我的 Home 控制器中描述了它们的操作。
提交表单后,我调用 sendRequest 方法,该方法检查表单错误并发送请求。这个方法看起来像:
def sendRequest = Action {implicit request =>
requestForm.bindFromRequest.fold(
formWithErrors => {
BadRequest(views.html.Home.contacts(formWithErrors))
},
response => {
Redirect(routes.HomeController.contacts().flashing("success" -> "OK"))
}
)
}
在这个方法中,我定义了要导航的视图和路线。对于我的“关于我们”页面,我应该做同样的工作,但调用关于我们的视图和路线。
如何创建通用方法并使用具体视图和路由作为参数调用它?
// if requestForm is a Form[A]
protected def genericMethod(
view: Form[A] => play.twirl.api.Html, route: play.api.mvc.Call) =
Action {implicit request =>
requestForm.bindFromRequest.fold(
formWithErrors => {
BadRequest(view(formWithErrors))
},
response => {
Redirect(route.flashing("success" -> "OK"))
}
)
}
def sendRequest = genericMethod(
views.html.Home.contacts,
routes.HomeController.contacts())
我网站的两个页面上都有申请表:关于我们和联系方式。我的 Home 控制器中描述了它们的操作。 提交表单后,我调用 sendRequest 方法,该方法检查表单错误并发送请求。这个方法看起来像:
def sendRequest = Action {implicit request =>
requestForm.bindFromRequest.fold(
formWithErrors => {
BadRequest(views.html.Home.contacts(formWithErrors))
},
response => {
Redirect(routes.HomeController.contacts().flashing("success" -> "OK"))
}
)
}
在这个方法中,我定义了要导航的视图和路线。对于我的“关于我们”页面,我应该做同样的工作,但调用关于我们的视图和路线。
如何创建通用方法并使用具体视图和路由作为参数调用它?
// if requestForm is a Form[A]
protected def genericMethod(
view: Form[A] => play.twirl.api.Html, route: play.api.mvc.Call) =
Action {implicit request =>
requestForm.bindFromRequest.fold(
formWithErrors => {
BadRequest(view(formWithErrors))
},
response => {
Redirect(route.flashing("success" -> "OK"))
}
)
}
def sendRequest = genericMethod(
views.html.Home.contacts,
routes.HomeController.contacts())