我有一個類層次結構。它的頂部有一個抽象的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