2016-04-14 13 views
1

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

<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 о том, как обращаться с такими входами. Фактически, это, казалось, было issue, которое теперь было fixed, но я не уверен, как обрабатывать это поле формы с помощью API-интерфейса Spray

ответ

0

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

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

<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 или что-то подобное, чтобы определить, был ли установлен флажок.

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