我在同样的问题上需要同样的帮助。我需要在控制器方法中传递一个长对象列表作为参数,即通过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作为参数,我该如何解决这个问题呢?
答案 0 :(得分:1)
这可能来自Controller(更确切地说来自Spring Binding)。我不知道列表转换的请求参数。你可以拥有String []或List。 当spring框架无法将参数转换为您想要的数据类型时,它会发出错误400。
在spring文档中检查@InitBinder注释,以编写自己的转换器。
我大量使用转换日期和时间参数。特别是将收到的所有时间自动转换为UTC
答案 1 :(得分:0)
我认为这不是控制器。看起来Web服务器正在回应您的请求。我会使用firebug或类似的工具来查看ajaxCall生成的URL并验证它是否正确。