首先,我是 JAXB 和 Spring 世界的新手,所以如果我错过了一些非常明显的东西,如果有人能指出而不是不回复,我会非常感激。:) 我尝试在这里寻找解决方案,但找不到好的答案。
我有一堆继承自同一个抽象类 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。
我该如何解决这个问题?顺便说一句,我们使用的是 Spring 3.1.3 版
谢谢你的帮助。