我恐怕是迷茫了。使用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
}
名字属性不能一样。将它们重命名为。
<button type="submit" name="action1" value="one">Edit order</button>
<button type="submit" name="action2" value="two">Remove order</button>