2011-04-24 86 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