Jaxb marshaller écrit toujours xsi:nil (même lors de la @XmlElement(required=false, nillable=true))
J'ai une propriété java annoté avec @XmlElement(required=false, nillable=true)
. Lorsque l'objet est convoquée pour xml, il est toujours sorti avec le xsi:nil="true"
attribut.
Est-il un jaxbcontext/marshaller option pour diriger le marshaller de ne pas écrire l'élément, plutôt que de l'écrire avec xsi:nil
?
J'ai cherché la réponse à cette et a également eu un coup d'oeil au code, afaics, il sera toujours écrire xsi:nil
si nillable = true
. Ai-je raté quelque chose?
OriginalL'auteur Keith | 2011-05-05
Vous devez vous connecter pour publier un commentaire.
Si la propriété est annoté avec
@XmlElement(required=false, nillable=true)
et la valeur est null, il sera écrit avecxsi:nil="true"
.Si vous l'annoter avec juste
@XmlElement
vous permettra d'obtenir le comportement que vous recherchez.import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
Exemple
Compte tenu de la classe suivante:
Et cette démo de code:
Le résultat sera:
FWIW, il semble que
@XmlElement(required=false)
produit également le comportement souhaité.Hrmmm ... je sais c'est vieux mais, le elementRequired null doit être fait jeter une erreur (à droite?) ... parce que ses null encore nécessaire. Dans mon cas, nous sommes à l'aide de cxf / SOAP.
J'essaie de prolonger votre exemple où elementNillableRequired élément a un attribut et puis il ne marche pas. Il crée élément non valide. Je viens de mettre en attribut et de laisser la valeur null: <elementNillableRequired statut="N" /> (nillable est manquant)
Je vais jeter un oeil à la correspondante de la question que vous avez posté: stackoverflow.com/questions/28537873/...
OriginalL'auteur Blaise Doughan