2014-06-06 43 views
0

請注意,此問題與#19619088不同,因爲我試圖傳遞純文本。ajax的Spring MVC - 所需的長參數'id'不存在

這裏是Java代碼:

public @ResponseBody 
String decertifyAll(
    @RequestParam(value="reason",required=false) String reason, 
    @RequestParam("id") long id, 
    final HttpServletRequest request) { 
... 

這裏是我的ajax:

$.ajax({ 
    url: '/dothing', 
    data: { 
     id: id, 
     reason: reason 
    }, 
    processData: false, 
    contentType: false, 
    dataType: 'text', 
    type: 'POST', 
    }).done(saveDone) 
    .fail(saveFail) 
    ; 

在Firebug,這是捕獲:

Source 
{"id":"1492811","reason":"text"} 

但是,我仍然得到錯誤:

Required long parameter 'id' is not present 

奇怪的是,這實際上工作正常,然後突然停止工作。我不知道爲什麼。

我的問題是:我需要改變什麼才能正確傳遞這些數據,以及爲什麼它無法找到我傳遞的數據,並將它傳遞到請求中?

我不想把這一切都包裝在一些其他的對象,但我會如果需要。

+1

你有'@RequestMapping(value =「/ dothing」,method = RequestMethod.POST)'?你爲什麼使用'processData = false'? – beerbajay

回答

1

這是解決通過刪除一些我在我的AJAX調用的可選參數:

$.ajax({ 
    url: '/dothing', 
    data: { 
     id: id, 
     reason: reason 
    }, 
    type: 'POST', 
    }).done(saveDone) 
    .fail(saveFail) 
    ; 

我猜beerbajay的意見是正確的,過程數據:錯誤是原因。