我试图编组一个对象作为其字段之一。JAXB使用java.lang.Object编组对象字段
@XmlRootElement
public class TaskInstance implements Serializable {
...
private Object dataObject;
...
}
DataObject中可以有很多不同的未知类型中的一种,所以指定每个地方不仅是不现实的,但不可能。当我尝试编组这个对象时,它说这个类对于上下文是不知道的。
MockProcessData mpd = new MockProcessData();
TaskInstance ti = new TaskInstance();
ti.setDataObject(mpd);
String ti_m = JAXBMarshall.marshall(ti);
“MockProcessData及其任何超类都是已知此上下文。”是我得到的。
有没有办法解决这个错误?
你在试图序列MockProcessData什么?即期望的表示是什么? – mtpettyp 2010-02-16 17:53:14
作为第一次使用JAXB的用户,我尝试编制从头开始创建的对象树,即从编译的XSD创建的对象树时,遇到了完全相同的问题。事实上,我想要反过来,一旦我的代码工作,就从类中生成模式。我试图按照前面介绍的方式在JAXBElement中包装我的对象,并且我和之前的版本完全相同“Foobar不知道这个上下文”消息,所以我没有更进一步。 – 2011-05-20 20:40:16
Hey Dasmotiu - 我最终包含了@XMLSeeAlso注解并提供了它可以尝试解组对象的所有类。例如: @XmlSeeAlso({ StringType.class, DecimalType.class, NumericType.class, BooleanType.class, StructType.class, ListType.class, DateType.class, SpatialType.class }) 公共抽象类FieldType { – jcovert 2011-05-21 19:55:34