我的前端有一个带有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()))
}