Отправка массива в контроллер Spring - PullRequest
2 голосов
/ 26 июля 2011

Я пытаюсь передать массив значений флажка на контроллер:

@RequestMapping(value = "/save", method = RequestMethod.POST)
public ModelAndView save(@RequestBody UserForm form, HttpServletResponse response) { ... }

где UserForm имеет:

public class UserForm extends BaseForm {    
     private String[] role; ... }

Я публикую сообщения с помощью метода jQuery postJSON. Все хорошо, когда выбрано более одного флажка - контроллер успешно преобразовал его в массив String. Но в случае установки только одного флажка - серверы не работают, потому что параметры запроса (особенно поле роли) были переданы в виде строки, а не массива с одним значением. Флажки выглядят так:

<input type="checkbox" name="role" value="1" />
<input type="checkbox" name="role" value="2" />
etc...

Любая помощь? Спасибо

Дополнительно:

$.postJSON(url + 'save',
                $('#userForm').serializeObject(),
                function(response) {
                    if (response.isAuthenticated && response.isAuthorized) {
                        if (response.hasErrors) {
                            $('#userForm').setErrors(response.errors);
                            hideWait();
                        }
                        else 
                            $('#filter').click();
                    }
                    else
                        redirectToLogin();
                });

1 Ответ

0 голосов
/ 06 октября 2011

Вот решение, которое я нашел:

var data = $('#userForm').serializeObject();
        data.ur = new Array();
        $('#ur:checked').each(function() {
            data.ur.push($(this).val());
        });
        $.postJSON(url + 'save',
                data,
                function(response) {
                    if (response.isAuthenticated && response.isAuthorized) {
                        if (response.hasErrors) {
                            $('#userForm').setErrors(response.errors);
                            hideWait();
                        }
                        else 
                            showList(true);
                    }
                    else
                        redirectToLogin();
                });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...