我正在向Spring 3.0控制器发布JSON请求。方法签名是......
@RequestMapping(value="/add", method=RequestMethod.POST)
public @ResponseBody Map<String, ? extends Object> add(@RequestBody Entry)
JSON看起来像这样......
{"user":"1"}
条目对象有一个用户类型的属性。
提交请求时会抛出此错误,
org.codehaus.jackson.map.JsonMappingException: Can not construct instance of com.x.y.z.Entry, problem: no suitable creator method found
我猜这个错误是因为Entry上的用户是User类型而不是String类型(在JSON上传入“1”)。
有没有办法让“1”进入并使用它来创建一个真正的User对象(在这种情况下通过在数据库中查找)?
答案 0 :(得分:2)
Entry是否有无参数构造函数?
这是你第一个看的地方。通常会出现这种性质的错误,因为代码正在寻找无参数构造函数来创建Entry with。
您的想法,即创建User作为真实用户很好,但是应该在调用此方法之后,在某些其他层或其他内容中完成。你想通过不干扰json的编组来保持简单。您可以使用其他图层添加此内容。