【问题标题】:Ajax and Spring MVC can't get list to spring methodAjax 和 Spring MVC 无法获取到 spring 方法的列表
【发布时间】:2018-04-03 17:45:15
【问题描述】:

当我尝试将带有 ajax 的列表发送到 spring 控制器中的方法时,我收到此错误:

不支持内容类型“application/x-www-form-urlencoded”

我的 AJAX 代码:

$('#btn-save').click(
    ajaxSend();
);

function ajaxSend() {
    $.ajax({
        url: "/kepres2Web/mvc/spatiu/update",
        type: 'POST',
        dataType: 'json',
        contentType: "application/json;charset=UTF-8",
        data: JSON.stringify(rects),
        success: function (data) {},
        error: function (data, status, er) {},
        headers: {
            'Content-type': 'application/x-www-form-urlencoded'
        }
    });
}

我的方法:

@RequestMapping(value = "/update", method = RequestMethod.POST, produces = {"application/json", "application/xml"}, consumes = {"application/x-www-form-urlencoded"})
public String update(@ModelAttribute("record") Spatiu spatiu,@RequestBody List<Desk> deskList) {
    System.out.println(deskList.get(0).getFill());

    dao.update(spatiu);
    //return null;
    return "redirect:view?ls&id=" + spatiu.getId();
}

还有我的按钮:

<button id="btn-save" type="submit" form="frmDetails" formaction="update">
    <img src="${pageContext.request.contextPath}/img/actions/save.png">
    <br>Salvare
</button>

编辑

发现 Spring 无法将 application/x-www-form-urlencoded 理解为 RequestBody,因此我将其删除并在方法上添加了 @ResponseBody。现在它返回并清空列表。

【问题讨论】:

  • 您设置了两次内容类型 - 一次在 contentType 选项中,一次在 headers 选项中,并且您将其设置为两个不同的值。
  • 另请参阅stackoverflow.com/questions/33796218/… 以了解可能的消息解决方案。
  • 删除了标题。仍然无法使用@ADyson。同样的错误
  • 添加消费作为应用程序 json。你只有产品。

标签: javascript jquery ajax spring spring-mvc


【解决方案1】:

需要在您的代码中修复几件事。

  1. 您已定义标题 2 次。由 headers 定义的 headers 优先。您需要删除它才能向您的服务发送 json 数据。

  2. 开启@RequestMapping 您需要定义消耗以便接受数据为 json。检查您是否默认将 json 作为接受的数据,否则使用消耗显式配置。

@RequestMapping(value = "URL", method = RequestMethod.POST, 消耗 = MediaType.APPLICATION_JSON_VALUE,产生 = MediaType.APPLICATION_JSON_VALUE)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 2014-04-25
    相关资源
    最近更新 更多