JSON - Spring MVC:如何将 json 数据发布到 Spring MVC 控制器
Posted
技术标签:
【中文标题】JSON - Spring MVC:如何将 json 数据发布到 Spring MVC 控制器【英文标题】:JSON - Spring MVC : How to post json data to spring MVC controller 【发布时间】:2013-01-11 10:54:51 【问题描述】:我在将 JSON 数据从 jsp
发布到 controller
时遇到问题。每次我尝试都会收到一个 ajax 错误Bad Request
。我对 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 是错误的。请帮忙。
【问题讨论】:
【参考方案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
【讨论】:
【参考方案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:如何将 json 数据发布到 Spring MVC 控制器的主要内容,如果未能解决你的问题,请参考以下文章
spring-boot-framework 如何自动将对象返回成json格式
JSON - Spring MVC:如何将 json 数据发布到 Spring MVC 控制器
如何使用 mvc spring 将 JSON 数组插入 MySQL
如何将 Json 对象从 ajax 传递到 spring mvc 控制器?