Play Framework控制器中的通用操作

时间:2016-12-15 10:49:46

标签: scala playframework playframework-2.5

我在我网站的两个页面上都有一份申请表:关于我们和联系人。我的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"))
  }
)

}

在这个方法中,我定义了导航的视图和路线。对于我的关于我们页面,我应该做同样的工作,但请致电我们查看和路线。

我如何创建泛型方法并使用具体视图和路由作为参数调用它?

1 个答案:

答案 0 :(得分:0)

// 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())