Scala表单提交基于发布数据的内容执行某些操作

时间:2019-04-01 13:47:22

标签: scala

我的前端有一个带有2个按钮的表单,

<button name="retry" value="123456">Retry</button> <button name="close" value="123456">Close</button>

单击一个按钮即可提交表单,这时我需要根据POST中的键确定用户是否要重新输入或关闭,因此我可以运行正确的方法来使用户前进。

我在scala代码中从POST提取是重试还是关闭时遇到严重问题,这是我的尝试。我需要弄清楚用户正在尝试使用哪种方法,以及按钮的值是什么(理想情况下,该值必须为字符串或长整数)。

    def submitMovementAction = Action { implicit request =>

       val map : Map[String,Seq[String]] = request.body.asFormUrlEncoded.getOrElse(Map())
       if(map.contains("close"))
           val closeId = map.get("close").flatMap(_.headOption)
           closeMovement((closeId))
       else if(map.contains("retry"))
           val retryId = map.get("retry").flatMap(_.headOption)
           replayMovement((retryId))
       else
           Ok("here")
  }

我收到此错误

  

类型不匹配;    找到:选项[字符串]    必需:字符串

我试图调用的2种方法是

private def replayMovement(idStr: String): Action[AnyContent] = authAction async { implicit request =>
val maybeId: Option[Long] = for {
  id <- Try(idStr.toLong).toOption
} yield id

maybeId.fold(ifEmpty = Future.successful(false))( mc.replayMovement)
  .map(_ => Redirect(uk.gov.hmrc.sdes.admin.controllers.routes.AdminDashboardController.show()))

}

private def closeMovement(idStr: String): Action[AnyContent] = authAction async { implicit request =>
    val maybeId: Option[Long] = for {
      id <- Try(idStr.toLong).toOption
    } yield id

    maybeId.fold(ifEmpty = Future.successful(false))( mc.closeMovement)
      .map(_ => Redirect(uk.gov.hmrc.sdes.admin.controllers.routes.AdminDashboardController.show()))
  }

0 个答案:

没有答案