2011-04-24 47 views
0

我需要相同的帮助,我有同样的问题。我需要在控制器方法中传递一个长对象列表作为参数,即通过jquery调用。春季mvc列表<Long>作为控制器方法中的参数

这里是代码

@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作为参数,我该如何解决这个问题?

回答

0

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

+0

是的,它没有得到控制器。在中间的重复不是从js中的列表加入列表 2011-04-27 01:30:53

+0

这将是jquery函数。这很奇怪。 – 2011-04-27 14:09:43

1

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

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

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