Play Framework 2.4.1 Одна форма с двумя кнопками. Какая кнопка была нажата? И как мне получить входные данные? - PullRequest
0 голосов
/ 28 апреля 2020

Боюсь, я потерян. Использование 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
}

1 Ответ

0 голосов
/ 28 апреля 2020

Свойство name не может быть одинаковым. Переименуйте их в:

  <button type="submit" name="action1" value="one">Edit order</button>
  <button type="submit" name="action2" value="two">Remove order</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...