JAXB Упорядочивающие Объекты с java.lang. Поле объекта

Я пытаюсь упорядочить объект, который имеет Объект как одно из его полей.

@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, ни любой его суперкласс известны этому контексту". то, что я получаю.

Есть ли какой-либо путь вокруг этой ошибки?

9
задан skaffman 15 February 2010 в 22:50
поделиться

1 ответ

JAXB не может маршалировать какой-либо старый объект, поскольку не знает, как это сделать. Например, он не будет знать, какое имя элемента использовать.

Если вам нужно обработать такого рода подстановочные знаки, единственное решение - обернуть объекты в объект JAXBElement , который содержит достаточно информации для JAXB для маршалинга в XML.

Попробуйте что-нибудь вроде:

QName elementName = new QName(...); // supply element name here
JAXBElement jaxbElement = new JAXBElement(elementName, mpd.getClass(), mpd);
ti.setDataObject(jaxbElement);
7
ответ дан 4 December 2019 в 23:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: