2013-02-14 205 views
0

时指定@RequestBody类型的我有我已经收到一个抽象类的端点:使用抽象类

@RequestMapping(value = URL, method = RequestMethod.POST) 
@ResponseBody 
public ModelMap update(@RequestBody SomeAbstractClass form) { 
     ... 
} 

当我张贴到它,我得到的错误:

Could not read JSON: Can not construct instance of ..., 
problem: abstract types can only be instantiated with dditional type information 

我理解为什么我得到这个错误,但我不知道我会在哪里指定the additional type information。理想情况下,我可以通过其中一个注释来指定具体类的类型,但是现在任何解决方案都已足够。

+0

Java对象? – 2013-02-14 21:41:37

回答

2

我相信你是uisng杰克逊作为JSON serailizer。

首先确保你在你的Spring的XML文件的conf有

<context:annotation-config/> 

我曾经有继承的类我通过注释解决它的同一个问题反序列化它

@JsonDeserialize(as=Child.class) 
public abstract class AbstractParent { ... } 
您正在使用什么样的转换器的`HttpMessageConverter`你从客户端进入一个JSON的转换
+0

是否可以使用应用程序属性来切换该注释?例如'@JsonDeserialize(as =((useDog)?Dog.class:Cat.class))'? – vpiTriumph 2013-02-14 22:23:50