Ajax 和 Spring MVC 无法将列表获取到 spring 方法



当我尝试将带有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-urlencode 作为 RequestBody,所以我删除了它并在方法上添加了@ResponseBody。现在它返回和空列表。

代码中要修复的几件事。

  1. 您已经定义了 2 次标头。标头定义的标头优先。需要删除它才能将 json 数据发送到服务。

  2. 在@RequestMapping您需要定义消耗才能接受数据作为 JSON。检查默认情况下是否将 json 作为接受数据,否则使用消耗显式配置。

@RequestMapping(值 = "URL",方法 = RequestMethod.POST,消耗 = MediaType.APPLICATION_JSON_VALUE,产生 = MediaType.APPLICATION_JSON_VALUE)

相关内容

  • 没有找到相关文章

最新更新