Sto provando a eseguire il marshalling di un oggetto che ha un oggetto come uno dei suoi campi.JAXB Marshalling Objects con java.lang.Object field
@XmlRootElement
public class TaskInstance implements Serializable {
...
private Object dataObject;
...
}
Il dataObject può essere uno dei molti diversi sconosciuti tipi, quindi specificando ogni posto è non solo impraticabile, ma impossibile. Quando provo a eseguire il marshalling dell'oggetto, si dice che la classe non è nota al contesto.
MockProcessData mpd = new MockProcessData();
TaskInstance ti = new TaskInstance();
ti.setDataObject(mpd);
String ti_m = JAXBMarshall.marshall(ti);
"MockProcessData né alcuno della sua classe eccellente è noto a questo contesto." è quello che ottengo.
C'è qualche modo per aggirare questo errore?
Cosa stai tentando di serializzare MockProcessData a? cioè qual è la rappresentazione desiderata? – mtpettyp
Come utente JAXB per la prima volta, ho esattamente lo stesso problema nel tentativo di eseguire il marshalling di una struttura ad oggetti creata da zero, cioè non creata da un XSD compilato. In effetti, voglio farlo al contrario e generare lo schema dalle classi una volta che il codice funziona. Ho provato a racchiudere il mio oggetto in un JAXBElement come descritto, e ho ottenuto esattamente lo stesso messaggio "Foobar non è noto in questo contesto" come prima, quindi non sono più in avanti. –
Hey Dasmotiu - Ho finito con l'includere l'annotazione @XMLSeeAlso e ho fornito tutte le classi a cui avrebbe potuto provare a rendere unmarshal l'oggetto. Ad esempio: @XmlSeeAlso ({ StringType.class, DecimalType.class, NumericType.class, BooleanType.class, StructType.class, ListType.class, DateType.class, SpatialType.class }) classe Field pubblica pubblica { – jcovert