【问题标题】:Spring MVC with ajax -- required long parameter 'id' is not present带有 ajax 的 Spring MVC - 所需的长参数“id”不存在
【发布时间】:2014-06-06 20:21:07
【问题描述】:

请注意,这个问题与 #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

奇怪的是,这实际上工作得很好,然后突然停止工作。我不知道为什么。

我的问题是:我需要进行哪些更改才能正确传递这些数据,为什么它找不到我传递的数据并将其放入发布请求中?

我不想将这一切都包装在其他对象中,但如果需要,我会这样做。

【问题讨论】:

  • 你有@RequestMapping(value="/dothing", method=RequestMethod.POST)吗?你为什么使用processData=false

标签: ajax spring-mvc


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-16
    • 2020-01-28
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    相关资源
    最近更新 更多