Play Framework 2.4.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
}

name属性不能相同。将它们重命名为:

<button type="submit" name="action1" value="one">Edit order</button>
<button type="submit" name="action2" value="two">Remove order</button>

最新更新