JSON – Spring MVC:如何将json数据发布到spring MVC控制器

我在将jsp数据从jsp发布到控制器时遇到问题.我每次尝试都会收到ajax错误错误请求.我是JSON的新手,我真的不知道我做错了什么.我搜索并尝试了一些我可以在这个网站找到的样本,但我仍然有问题.

在我的控制器中:

@RequestMapping (method = RequestMethod.POST,headers ={"Accept=application/json"},value = "/form")
public String postJournalEntry (@RequestParam ("json") String json,Model model) {
    System.out.println(json);
    return "successfullySaved";
}

在我的jsp中:

$("#btnPostGlEntry").click(function () {
    var glEntries = '{"glEntries":[{"generalLedgerId":"1"},{"accountId":"4"},{"amount":"344.44"},{"description":"Test Entry"},{"debit":"Yes"}]}';
    $.ajax({
        type: "POST",contentType: "application/json",dataType: "json",url: contextPath + "/generalLedger/journalEntries/form",data : JSON.stringify(glEntries),success: function(data) {
            alert("Success!!!");
        },error: function (jqXHR,textStatus,errorThrown) {
            alert(jqXHR + " : " + textStatus + " : " + errorThrown);
        }
    });
});

注意:我甚至不确定我的控制器中的功能是否正确.我认为我的控制器和我的ajax是错误的.请帮忙.

最佳答案
如果你想将你的JSON反序列化到某个类中,那么你必须定义这样的方法(并且不要忘记添加jsonConverter,如前面的答案):

.... method(@RequestBody MyClass data){ ... }

但是,如果您希望您的方法接受JSON作为String而不是这样做:

.... method(@RequestBody String json){ ... }

所以,基本上,如果你发布JSON,这意味着JSON不是一个参数,它是请求的主体.最后你必须使用@RequestBody注释,而不是@RequestParam.

你可以在这里找到Spring Mvc和JSON的精彩视频教程:sites.google.com/site/upida4j/example

相关文章

这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED的原...
今天小编给大家分享的是一文解析spring中事务的传播机制,相...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有...
这篇文章主要介绍了怎么使用Spring提供的不同缓存注解实现缓...