6
votes

Jaxb Annotations - Interfaces de mappage et @XMLelementwrapper

J'ai des problèmes avec Jaxb Annotations pour un champ qui est une liste dont le type généalifié est une interface. Quand je l'ai déclaré, comme: xxx

Tout fonctionne correctement. Mais lorsque j'ajoute un élément d'emballage, tel que: xxx

Je trouve que les maréchals de l'objet Java correctement, mais lorsque je mâlée le document créé par marshaling, ma liste est vide. J'ai posté ci-dessous le code pour démontrer ce problème.

Est-ce que je fais quelque chose de mal, ou est-ce un bug? Je l'ai essayé avec la version 2.1.12 et 2.2-ea avec le même résultat.

Je travaille à travers l'exemple de mappage d'interfaces avec des annotations situées ici: https://jaxb.dev.java.net/guide/mbappe_interfaces.html xxx


0 commentaires

5 Réponses :


0
votes

Lorsque j'exécute votre programme de test avec jdk1.6.0_20, il semble fonctionner et je reçois la sortie suivante:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<zoo><animals><dog/><cat/></animals></zoo>
it worked


1 commentaires

J'utilise la version de Jaxb 2.1 incluse avec JDK1.6.0_20. Vous pouvez également essayer votre exemple avec Moxy Jaxb (je suis la tête de technologie). Nous avons corrigé un bug lié à votre question, vous devrez utiliser aujourd'hui (novembre 4) ou ultérieur ECLIPESELINK 2.2.0 Nightly Download: Eclipse.org/eclipselink/downloads/night.php



0
votes

Avez-vous essayé de mettre vos annotations dans vos accessoires? J'ai également eu ce problème avec @XMLElementwrapper avant, mais je l'ai été résolu en mettant l'annotant mon getter au lieu d'annoter la déclaration de champ.


0 commentaires

8
votes

devrait utiliser @XMLElementRefs ({ @Xmlelementalref (type = chien.class), @Xmlelementalref (type = cat.class)}) Liste privée Animaux;

ou utiliser @XmelyElement (LAX = TRUE) uniquement et ajoutez Dog.class, Cat.Class à JaxbContext


0 commentaires

0
votes

Lorsque j'exécute votre programme de test avec jdk1.6.0_20, il ne fonctionne pas, une fois que j'ai changé d'annotation pour la liste de @xmlanyElement (Lax = true) à @xmlementalSrefs ({ @XMLELEMENTREF (type = chien.class), @xmlelementref (type = cat.class)}) alors ça marche. Peu importe que chien.class et cat.class est ajouté à jaxbcontext ou non.


0 commentaires

1
votes

Ceci est un bug qui a été corrigé dans JAXB 2.1.13. Mettez à jour vos bibliothèques ou utilisez JDK 1.7 ou version ultérieure et le problème sera résolu.


0 commentaires