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