Spring MVC список <Long>в качестве параметра в методе контроллера - PullRequest
0 голосов
/ 24 апреля 2011

Мне нужна такая же помощь с той же проблемой, что и у меня. Мне нужно передать список длинных объектов в качестве параметров в методе контроллера, то есть вызов через JQuery.

вот код

@RequestMapping(value="/path/retrieve")
    public @ResponseBody String retrieve(@RequestParam List<Long> ids) {
        *******
    }

и вызов jquery

var aids = new Array();
aids.push(busId);
ajaxCall('path/retrieve.html', {
                ids : aids
            }, function() { // more code **********
});

ajaxCall это функция с этим кодом:

function ajaxCall(url, data, callback, onError) {

    jQuery.ajax({
        type : 'POST',
        url : url,
        dataType : 'json',
        data : data,
        success : function(actionResult) {
            actionResult = eval(actionResult);
            // these kind of calls must return an action result.
            if (callback != undefined || callback != null)
                callback(actionResult); // invoke callback passing object result
        },
        error : function(jqXHR, textStatus, errorThrown) {
            if (onError != undefined && onError != null)
                onError(jqXHR, textStatus, errorThrown);
            else
                ajaxCallOnError(jqXHR, textStatus, errorThrown);
        }
    });
}

хорошо, когда я пытаюсь сделать звонок, я получаю следующую ошибку

HTTP 400 - запрос, отправленный клиентом, был синтаксически неверным ()

Я предполагаю, что контроллер не принимает список в качестве параметра, как я могу решить эту проблему?

Ответы [ 2 ]

1 голос
/ 27 июля 2011

Это может быть из контроллера (точнее из Spring Binding).Я не знаю, для параметра запроса для преобразования списка.Вы можете иметь строку [] или список.Когда Spring Framework не может преобразовать параметр в нужный вам тип данных, он выдает ошибку 400.

Проверьте аннотацию @InitBinder в документации Spring для написания ваших собственных преобразователей.

Я активно использую его для параметров даты и времени конвертации.Специально для автоматического преобразования всего полученного времени в UTC

0 голосов
/ 25 апреля 2011

Я не думаю, что это добраться до контроллера.Похоже, веб-сервер отбрасывает ваш запрос.Я бы использовал firebug или аналогичный инструмент, чтобы взглянуть на URL, который генерирует ajaxCall, и убедиться, что он правильный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...