Spray - Разбор форм с флажками

Я настраиваю простой API, часть которого принимает POST запросы через отправку формы. Форма требует, чтобы пользователь установил один или несколько флажков с одинаковым именем, например

<form>
  <input type='text' name='textval'>
  <input type='checkbox' name='cbox' value='val1'> Value 1
  <input type='checkbox' name='cbox' value='val2'> Value 2
  <button type='submit'>Submit</button>
</form>

Я пытаюсь обработать запрос в Spray вот так:

path("mypath") {
  post {
    formFields('textval, 'cbox) { (textval, cbox) =>
      // Now what?
    }
  }
}

Я не могу найти документацию в Spray Docs о том, как обрабатывать такие входные данные. На самом деле, это казалось проблемой, которая сейчас исправлена, но я не уверен, как обработать это поле формы с помощью Spray API.

1 ответ

Решение

Я нашел несколько хакерское решение для удовлетворения моих потребностей. Я изменил имена своих флажков, чтобы представить значения, связанные с ними, и я использую необязательные поля формы в моем маршруте распыления

Вот моя новая форма

<form>
  <input type='text' name='textval'>
  <input type='checkbox' name='cbox1' value='val1'> Value 1
  <input type='checkbox' name='cbox2' value='val2'> Value 2
  <button type='submit'>Submit</button>
</form>

Маршрут меняется соответственно

path("mypath") {
  post {
    formFields('textval, 'cbox1.?, 'cbox2.?) { (textval, cbox1, cbox2) =>
      complete(s"textval:'$textval', cbox1:'$cbox1', cbox2:'$cbox2'")
    }
  }
}

Необязательные поля сопоставляются с типом Option[String] который можно легко проверить с помощью .isEmpty или что-то подобное, чтобы определить, был ли установлен флажок.

Однако одна проблема заключается в том, что это позволит размещать формы без установленных флажков, поскольку все они являются необязательными. Возможно, вы могли бы установить один по умолчанию.

Другие вопросы по тегам