【发布时间】:2013-12-04 10:30:38
【问题描述】:
我有一个简单的控制器方法:
@RequestMapping(value = "/test", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
@ResponseBody
public void postCheck(@RequestBody TestDTO testDTO, HttpServletRequest request) {
System.out.println(testDTO);
}
DTO 是:
public class TestDTO {
private String hello;
public TestDTO() {
}
public String getHello() {
return hello;
}
public void setHello(String hello) {
this.hello = hello;
}
}
当我尝试向该 url 发布请求时,我收到错误 400 消息响应“客户端发送的请求在语法上不正确。” (根本没有调用控制器方法)
我尝试从 Chrome 的海报插件和 jquery 的 ajax 发布:
$.ajax({
type : "POST",
url : "http://localhost:8080/NG_Admin/test",
contentType : "application/json",
dataType : "json",
data : JSON.stringify(eval({"hello" : "world"})),
error : function(data) {
alert('Error');
},
success : function(data) {
alert('Success!');
}
});
}
有什么想法吗? (顺便说一句,我同时使用'jackson-mapper-asl',版本:'1.9.12','jackson-core-asl',版本:'1.9.12')
谢谢
【问题讨论】:
-
从
@RequestMapping中删除consumes = ...是否有效 - 注释?我在这里有一些匹配的设置(spring 3.2.4,jackson 1.9.12,来自前端的 jquery post,也只能通过对我的 formmodel/dto 使用直接验证来扩展),只是缺少消耗 - 它就像一个魅力。但是......我看到你从客户端对json中的一些字符串进行字符串化......也可能是这样。我会尝试删除"" -
仍然无法正常工作:(我是否必须配置 spring 才能与 jackson 一起使用?还是自动发生?
标签: json spring spring-mvc marshalling