我有一个类层次结构。它的顶部有一个抽象的AnswerUnit类。有两个继承类:OpenQuestionAnswer和MultipleChoiceQuestionAnswer。@ResponseBody +继承Spring MVC + JSON
我有一个.jsp表单发送数据(对象序列化为JSON)到服务器与AJAX请求和控制器中的方法来处理它。
@RequestMapping(value = "/test", method = RequestMethod.POST)
public @ResponseBody
String testPostMethod(@RequestBody
OpenQuestionAnswer answer) {
return "home";
}
我希望能够采取“AnswerUnit回答”作为参数(抽象类型,而不是具体类型,这样我就可以从不同的角度处理请求的一个方法)。当我尝试这样做有一个问题 - 服务器respose是
400 BAD REQUEST he request sent by the client was syntactically incorrect.
我认为,原因是春季(杰克逊?)是不是能够找出具体的类,他应该创建和使用。 在客户端,我知道我发送到服务器的类是什么类。 什么是正确的方式告诉服务器应该创建哪个具体类并填充我的请求?
在你的示例中,你已经展示了一个具体的类型 - “OpenQuestionAnswer”,即使使用具体类型,你是否得到了这个错误?你可以尝试降低日志级别DEBUG,看看是否有其他东西显示 – 2012-08-11 15:08:24
似乎很明显,但你是否在你的JSON POST中引用方法到你的具体类(不能认为没有看到代码)?你可能不得不放弃继承,并用组合来代替(http://stackoverflow.com/questions/2399544/difference-between-inheritance-and-composition) – nickdos 2012-08-12 06:11:14