2013-02-14 145 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