带有ajax的Spring MVC - 不存在所需的长参数'id'

时间:2014-06-06 20:21:07

标签: ajax spring-mvc

请注意,这个问题与#19619088不同,因为我试图传递纯文本。

这是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)
    ;

在萤火虫中,这被捕获:

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

但是,我仍然得到错误:

 Required long parameter 'id' is not present

奇怪的是,这实际上工作正常然后突然停止工作。我不明白为什么。

我的问题是:我需要更改哪些内容才能正确传递这些数据,为什么无法找到我传递的数据并将其转换为发布请求?

我不想将其全部包含在其他对象中,但如果需要,我会。

1 个答案:

答案 0 :(得分:2)

通过删除我在AJAX调用中的一些可选参数来解决这个问题:

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

我猜测beerbajay的评论是正确的,因为processData:false是原因。