JSON - Spring MVC的:如何发布JSON数据到春天MVC控制器(JSON - Sp

2019-07-18 19:19发布

我从张贴JSON数据有问题jspcontroller 。 每次我想我得到一个Ajax错误Bad Request 。 Im很新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);
        }
    });
});

注:IM甚至不知道,如果我在我的控制器的功能是正确的。 我认为我的控制器和我的AJAX是错误的。 请帮忙。

Answer 1:

如果你希望你的JSON被反序列化到某个类,比你要定义这样的方法(不要忘了加jsonConverter,如前面的回答):

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

但是,如果你想你的方法接受JSON字符串作为比做到这一点:

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

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

你可以找到Spring MVC和JSON这里的美丽的视频教程: sites.google.com/site/upida4j/example



Answer 2:

看来你没有一个JSON转换器正确配置

像这个

<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
  <list>
    <ref bean="jacksonMessageConverter"/>
  </list>
</property>
</bean>


文章来源: JSON - Spring MVC : How to post json data to spring MVC controller