我正在开发一个Web应用程序,我有一个生成xml的Rest服务。标题看起来像这样
@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 :(得分:0)
如果无法修改CatalogueType
只需创建另一个类,请说CatalogueTypeResponse
与CatalogueType
具有相同的结构,并添加所有必需的注释。从第一眼看,这可能看起来像代码重复,但从你的解释看来,CatalogueType
是控制器内部的东西。但控制器本身通常是文档化的公共接口,因此返回的对象不应受CatalogueType
中可能的更改的影响。因此,这不是一个坏习惯。
实际上你的原始问题对我来说似乎很奇怪,它应该打印POJO的XML / JSON表示而不需要任何注释。你有没有添加所有必要的罐子(即杰克逊)?