恐怕我迷路了。将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>