【发布时间】:2012-09-26 10:25:54
【问题描述】:
客户端代码:
$.ajax({
type: "POST",
url: "../web/zittles",
data: jsonformatdata,
contentType: "application/json",
dataType: "json",
success: function(data)
{
alert("data from server : "+data);
},
error: function(jqXHR, textStatus, errorThrown)
{
alert("jqXHR.status = "+jqXHR.status); //getting status code 400 here
}
});
输出json数据:
{
"id": 1,
"No": "1234",
"Desc": "Testing"
}
Java 类:
public class Fizzle implements Serializable
{
private String id;
private String No;
private String Desc;
// getters and setters
}
Spring 3 控制器:
@RequestMapping(value = '/zittles', method = RequestMethod.POST, headers ="Content-Type=application/json")
public @ResponseBody void doSomeThing (@RequestBody Fizzle fizzle) {
//do something here
}
app-servlet.xml 有
<mvc:annotation-driven/>
tomcat的/lib文件夹有
jackson-core-lgpl-1.9.10.jar
jackson-mapper-lgpl-1.9.10.jar
收到状态码 400 的错误 -
"The request sent by the client was syntactically incorrect"
当我如下所示更改控制器代码时,它将 json 数据作为字符串。
public @ResponseBody void doSomeThing (@RequestBody String fizzle) {}
理想情况下,Jackson 应该自动将 json 数据映射到 Fizzle 对象。
我在这里缺少什么。要正确配置 Jackson 解析器,还需要做些什么吗?
请帮忙。
【问题讨论】:
-
@RequestBody 将正文转储到该变量中,将其删除,我认为它应该可以工作。
-
他想把输入的json转成POJO,所以@RequestBody是正确的
标签: ajax post spring-mvc jackson spring-3