我无法使用 JQuery Ajax 将 JSON 对象发送到 Spring MVC Controller 。这是我的 Controller 方法的定义:
@Controller
@RequestMapping(value = "InboxViewTemplate")
public class InboxViewController {
@ResponseBody
@RequestMapping(value = "updateInboxView")
public String updateInboxView(HttpServletRequest request, InboxView inboxView) {
...
}
然后我尝试调用此请求:
$.ajax({
dataType: 'json',
contentType: "application/json",
url: ctx + "/InboxViewTemplate/updateInboxView",
data: ({inboxView : {createUser:"dave"}}),
success: function(data) {
$("#updateInboxView").html(data);
},
error: function (jqXHR, textStatus, errorThrown) {
alert(jqXHR + " : " + textStatus + " : " + errorThrown);
}
});
}
但 JSON 对象未传递。有人能帮我吗?提前致谢。
最佳答案
首先,您的 Controller 不知道在哪里寻找 InboxView。是请求参数吗?路径参数?请求正文?
其次,您可能希望将 json 请求类型更改为 POST 或 PUT,因为您要更新数据而不仅仅是检索数据。
所以像这样:
@Controller
@RequestMapping(value = "InboxViewTemplate")
public class InboxViewController {
@ResponseBody
@RequestMapping(value = "updateInboxView", method = RequestMethod.POST)
public String updateInboxView(HttpServletRequest request, @RequestBody InboxView inboxView) {
...
}
和
$.ajax({
dataType: 'json',
contentType: "application/json",
url: ctx + "/InboxViewTemplate/updateInboxView",
type: 'POST',
data: JSON.stringify({inboxView : {createUser:"dave"}}), //if no JSON is available use the one from https://github.com/douglascrockford/JSON-js
success: function(data) {
$("#updateInboxView").html(data);
},
error: function (jqXHR, textStatus, errorThrown) {
alert(jqXHR + " : " + textStatus + " : " + errorThrown);
}
});
}
应该可以。
我假设您已正确配置 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>
或 spring xml 配置中其他消息转换器的等效内容。
关于JQuery 将 JSON 发送到 Spring MVC Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8653915/