2017-09-22 54 views
0

我正在開發一個Web應用程序,並且我有一個Rest Service可以生成一個xml。頭看起來像這樣重置服務無法編組沒有@XmlRootElement的jaxb對象

@RequestMapping(value="/{catalogId}",method= RequestMethod.GET,produces = MediaType.APPLICATION_XML) 
public @ResponseBody 
ResponseEntity<CatalogueType> getCatalog(@PathVariable(value = "catalogId") String catalogId, HttpServletResponse response) throws Exception { 

的問題是,CatalogueType是一個JAXB對象,但沒有@XmlRootElement標籤,因爲這個原因,我得到HTTP 406錯誤。我無法修改返回類。我如何使這個工作?

回答

0

如果這是不可能修改CatalogueType剛剛創建另一個類,說CatalogueTypeResponse這將具有相同的結構CatalogueType並添加所需的所有annotations.From第一眼這可能看起來像代碼重複,但是從你的解釋似乎是CatalogueType是你的控制器內部的東西。但是控制器本身通常是文檔化的公共接口,所以返回的對象不應受到CatalogueType中可能的更改的影響。因此,這不是一個壞習慣。

其實你的原始問題對我來說似乎很奇怪,它應該打印沒有任何註釋的POJO的XML/JSON表示。你是否添加了所有必需的罐子(即傑克遜)?