Spring MVC и флажки

Я использую Spring MVC 3.0 и не могу полностью увидеть все части этой проблемы: мой контроллер создаст список объектов домена. Скажем, простой объект User с свойствами firstName, lastName, age и role. Я хочу вывести этот список пользователей в таблице (по одному столбцу на каждое свойство), причем каждая строка также имеет флажок, который по умолчанию выбран. Затем пользователь, использующий страницу, может потенциально отменить выбор некоторых из них. Когда они нажмут кнопку "Отправить", я хочу, чтобы у меня был список избранных пользователей и что-то с ними делать.

Я знаю, что есть тег: checkboxes в Spring, но я не могу понять, как его использовать и как получить результаты в контроллере.

Любая помощь или предложения?

Ответ 1

Если у вас User объект имеет поле id, вы можете отправить идентификаторы выбранных пользователей, как это (вам нужен даже тег формы Spring для этого простого сценария):

<form ...>
    <c:foreach var = "user" items = "${users}">
        <input type = "checkbox" name = "userIds" value = "${user.id}" checked = "checked" /> <c:out value = "${user.firstName}" /> ...
    </c:foreach>
    ...
</form>

-

@RequestMapping (...)
public void submitUsers(@RequestParam(value = "userIds", required = false) long[] userIds)
{
    ...
}

Ответ 2

Когда страница содержит флажок и отправляется ее содержащая форма, браузеры делают следующее.

  • Если флажок установлен, он отправляется с атрибутом 'value' в качестве значения
  • Если флажки не отмечены, переменная не будет отправлена ​​вообще.

В вашем случае я бы изменил @RequestParam ( "abono" ) на @RequestParam (required = false, value = "abono" ), а затем проверьте, чтобы ваш Boolean был null. Если он равен нулю, флажок не был отмечен пользователем.