JAXB Ordonnancement des Objets avec java.lang.Champ objet
Je suis en train de ranger un objet qui a un Objet que l'un de ses champs.
@XmlRootElement
public class TaskInstance implements Serializable {
...
private Object dataObject;
...
}
La dataObject peut être l'un des nombreux différents inconnu types, de sorte que la spécification de chaque quelque part n'est pas seulement impossible, mais impossible. Lorsque j'essaie de maréchal de l'objet, il dit que la classe n'est pas connu du contexte.
MockProcessData mpd = new MockProcessData();
TaskInstance ti = new TaskInstance();
ti.setDataObject(mpd);
String ti_m = JAXBMarshall.marshall(ti);
"MockProcessData ni aucune de ses super-classe est connue à ce contexte." est-ce que je reçois.
Est-il un moyen de contourner cette erreur?
De quoi êtes-vous en tentant de sérialiser MockProcessData? autrement dit, quelle est la représentation souhaitée?
Dans un premier temps JAXB utilisateur, j'ai exactement le même problème en essayant de ranger un arbre d'objets créés à partir de zéro, c'est à dire pas créé à partir de la compilation d'un fichier XSD. En fait, je veux faire l'inverse, et de générer le schéma de classes une fois que j'ai le code de travail. J'ai essayé d'emballage de mon objet dans un JAXBElement comme décrit, et j'ai eu exactement le même "Foobar n'est pas connu à ce contexte" message comme avant, donc je ne suis plus en avant.
Hey Dasmotiu - j'ai terminé y compris le @XMLSeeAlso annotation et offrant toutes les classes qu'elle pourrait essayer de unmarshal l'objet. Par exemple: @XmlSeeAlso({ StringType.class, DecimalType.class, NumericType.class, BooleanType.class, StructType.class, ListType.class, DateType.class, SpatialType.class }) public abstract class FieldType {
Dans un premier temps JAXB utilisateur, j'ai exactement le même problème en essayant de ranger un arbre d'objets créés à partir de zéro, c'est à dire pas créé à partir de la compilation d'un fichier XSD. En fait, je veux faire l'inverse, et de générer le schéma de classes une fois que j'ai le code de travail. J'ai essayé d'emballage de mon objet dans un JAXBElement comme décrit, et j'ai eu exactement le même "Foobar n'est pas connu à ce contexte" message comme avant, donc je ne suis plus en avant.
Hey Dasmotiu - j'ai terminé y compris le @XMLSeeAlso annotation et offrant toutes les classes qu'elle pourrait essayer de unmarshal l'objet. Par exemple: @XmlSeeAlso({ StringType.class, DecimalType.class, NumericType.class, BooleanType.class, StructType.class, ListType.class, DateType.class, SpatialType.class }) public abstract class FieldType {
OriginalL'auteur jcovert | 2010-02-15
Vous devez vous connecter pour publier un commentaire.
JAXB ne peut maréchal de tout objet ancien, puisqu'il ne sait pas comment. Par exemple, il ne serait pas savoir ce que le nom de l'élément à utiliser.
Si vous avez besoin pour gérer ce genre de générique, la seule solution est d'envelopper des objets dans une
JAXBElement
objet, qui contient suffisamment d'informations pour JAXB pour le maréchal de XML.Essayez quelque chose comme:
Le nom de l'élément et de l'espace de noms peut être quelque chose que vous aimez, alors oui,
dataObject
ce serait bien. Comme pour les génériques, il suffit d'utiliserJaxbElement<Object>
, c'est juste une compilation chose, JAXB n'a pas fait attention au moment de l'exécution.Il m'a fallu quelques minutes pour le faire fonctionner, mais en effet c'est une excellente solution. Un changement mineur (pour les personnes qui pourraient rencontrer le même problème):
ti.setDataObject(jaxbElement)
devrait êtreti.setDataObject(jaxbElement.getValue())
Merci encore pour l'aide!Salut, j'ai essayé de le faire. Mais Encore, je reçois le même message d'erreur. Ma question est posté ici. stackoverflow.com/questions/14057932/... . Pouvez-vous svp m'aider?
J'ai aimé l'idée va essayer moi-même et d'afficher le résultat. Ce que je veux faire est d'écrire un objet ResultSet XML
OriginalL'auteur skaffman
Méthode:
Modèle:
OriginalL'auteur Pinkesh Sharma