播放框架2.4.1一个表格有两个按钮。哪个按钮被按下了?又如何获取输入数据?

问题描述 投票:0回答:1

我恐怕是迷茫了。使用Play Framework 2.4.1和Scala。在我的表单中,我有两个按钮。

@form(routes.Orders.handle(order.id)) {
  @helper.textarea(field = userForm("name"), 'disabled -> "disabled")
  @helper.checkbox(field = userForm("next"), 'class -> "largerCheckbox")

  <button type="submit" name="action" value="one">Edit order</button>
  <button type="submit" name="action" value="two">Remove order</button>
}

控制器:

  def handle(id: Long) = Action { implicit request =>

  val userData = userForm.bindFromRequest.get

  request.body.asFormUrlEncoded.get("action").headOption match {
    case Some("one") => Ok("Clicked edit ")
    case Some("two") => Ok("Clicked remove")
    case _ => BadRequest("This action is not allowed")
  }
}

userForm.bindFromRequest.get抛出异常。

[NoSuchElementException: None.get]

我现在如何在控制器中区分哪个按钮被按下,并读取用户数据?

更新。

我找到了一个解决方案。解决方案也许说得太多了,我们称它为一个可怕的工作方法。

val result = Try {request.body.asFormUrlEncoded.get("next").headOption}

val next = result match {
  case Success(value) => true
  case Failure(exception) => false
}
scala playframework
1个回答
0
投票

名字属性不能一样。将它们重命名为。

  <button type="submit" name="action1" value="one">Edit order</button>
  <button type="submit" name="action2" value="two">Remove order</button>
© www.soinside.com 2019 - 2024. All rights reserved.