Ajax和Spring MVC无法获取列表到弹簧方法

当我尝试用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。 现在它返回并清空列表。


几件事情要修复你的代码。

  • 您已经定义了标题2次。 标题定义的标题优先。 你需要删除它才能发送json数据你的服务。

  • 在@RequestMapping上,您需要定义消耗才能将数据接受为json。 检查是否默认json为接受数据,否则显式使用消耗配置。

  • @RequestMapping(value =“URL”,method = RequestMethod.POST,consumes = MediaType.APPLICATION_JSON_VALUE,产生= MediaType.APPLICATION_JSON_VALUE)

    链接地址: http://www.djcxy.com/p/48465.html

    上一篇: Ajax and Spring MVC can't get list to spring method

    下一篇: Alternative for @RequestBody in Spring Portlet MVC