JAXB objets initialisés avec les valeurs par défaut
Il y a peu de problème avec JAXB.
Donné:
- Java 1.5; jaxb -pots de jaxws-2_0.
- .xsd schéma et généré JAXB classes.
- Chaque élément simple .xsd est la valeur par défaut. Et, par conséquent, les membres de la classe a des annotations comme
"@XmlElement(name = "cl_fname", required = true, la valeur par défaut = "[______]")"
Nécessaire
Obtenir java objet (élément racine) qui représentent pleinement xml et chaque membre initialisé par des valeurs par défaut.
quand j'essaie de marshall xml sans explicitement les valeurs de réglage, les valeurs par défaut ne fait pas de sens... est-il possible de marshall xml rempli avec les valeurs par défaut sans la personnalisation des classes générées?
exemple de .xsd:
<xs:element name="document">
<xs:complexType>
<xs:sequence>
<xs:element ref="d_int"/>
<xs:element ref="d_double"/>
<xs:element ref="d_string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="d_int" type="xs:int" default="-1"/>
<xs:element name="d_double" type="xs:double" default="-1.0"/>
<xs:element name="d_string" type="xs:string" default="false"/>
et de la classe java:
public class Document {
@XmlElement(name = "d_int", defaultValue = "-1")
protected int dInt;
@XmlElement(name = "d_double", defaultValue = "-1.0")
protected double dDouble;
@XmlElement(name = "d_string", required = true, defaultValue = "Default")
protected String dString;
...
}
OriginalL'auteur A7iz | 2012-08-20
Vous devez vous connecter pour publier un commentaire.
valeur par défaut qui est dans les annotations qu'après unmarshalling.
unmarshal ce
et vous obtiendrez un objet avec des valeurs par défaut (-1, -1.0, "par Défaut")
Si vous souhaitez définir des valeurs par défaut de regroupement, vous devez faire ce
jaxb générer des valeurs par défaut uniquement pour unmarshalling
required
si vous spécifiez également unedefaultValue
. Qui semble contredire, n'est-ce pas ?Si vous laissez au large de la
defaultValue
, la valeur attribuée au domaine par défaut à la fois pour unmarshalling et de l'ordonnancement, ou il n'y en aura pas de valeur par défaut pour unmarshalling? (par exemple, si vous avez pris horsdefaultValue = "-1"
pourdInt
, serait100
être la valeur par défaut pour unmarshalling aussi?)OriginalL'auteur Ilya
Pour une initialisation de la classe des membres de XSD fourni par défaut, vous pouvez utiliser la valeur par défaut-valeur-plugin de XJC.
Voir le site du plugin.
Noter que la tâche ant définition comme expliqué dans cette documentation n'a pas de travail pour moi. Comme expliqué ici, la classe des chemins de XJC et le plugin doivent être séparés. En spécifiant le chemin d'accès au plugin lors de l'appel il fonctionne pour moi:
OriginalL'auteur Stefan Bormann