spring mvc list <long>作为控制器方法中的参数</long>

时间:2011-04-24 16:03:18

标签: jquery spring-mvc

我在同样的问题上需要同样的帮助。我需要在控制器方法中传递一个长对象列表作为参数,即通过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 - 客户端发送的请求在语法上不正确()

我假设控制器不接受List作为参数,我该如何解决这个问题呢?

2 个答案:

答案 0 :(得分:1)

这可能来自Controller(更确切地说来自Spring Binding)。我不知道列表转换的请求参数。你可以拥有String []或List。 当spring框架无法将参数转换为您想要的数据类型时,它会发出错误400。

在spring文档中检查@InitBinder注释,以编写自己的转换器。

我大量使用转换日期和时间参数。特别是将收到的所有时间自动转换为UTC

答案 1 :(得分:0)

我认为这不是控制器。看起来Web服务器正在回应您的请求。我会使用firebug或类似的工具来查看ajaxCall生成的URL并验证它是否正确。