首先,我是JAXB和Spring世界的新手,所以如果我錯過了非常明顯的事情,我會非常感激,如果有人可以指出而不是回覆。 :)我嘗試在這裏尋找解決方案,但找不到一個好的答案。@XmlSeeAlso繼承
我有一堆繼承自同一抽象類A的子類DTO(稱爲A1,A2,A3)。我希望我的休息查詢的結果返回子類類型的列表。我有以下類來表示結果
@XmlRootElement(name="result")
@XmlSeeAlso({A1.class, A2.class, A3.class})
public class AResult<T>
{
...
}
由於AResult是通用的,我想在@XmlSeeAlso也可以通用的,只是喜歡寫東西
@XmlSeeAlso({(subclasses of A.class})
但我不認爲這是可能的JAXB來自我在本網站和其他地方所做的研究。
由於我們使用註解驅動標籤的配置,它會自動使用Jaxb2RootElementHttpMessageConverter類。此消息轉換器使用@XmlSeeAlso中定義的類創建JaxbContext。 createMarshaller和getContext方法在超類中是不可變的。
由於第1點,我不能寫一個類,我可以檢查一個類是否是類A的子類,然後將它添加到JaxbContext。我無法使用自定義Jaxb2RootElementHttpMessageConverter或自定義Marshaller。
我該如何解決這個問題?順便說一句,我們正在使用春天版本3.1.3
感謝您的幫助。
感謝您的幫助Donal。下面是我如何解決這個問題:1.創建一個擴展HttpMessageConverter的CustomJaxb2RootElementMessageConverter。 2.在我的自定義類中,將上下文作爲路徑傳遞,並在這些包中包含jaxb.index文件。 3.更改了AnnotationMethodHandlerAdapter和RequestMappingHandlerAdapter的messageConverters以使用我的Custom類。 – srjxtd 2013-02-25 22:21:31