Wir haben eine Klasse mit einer JAXB-Anmerkung auf einer Eigenschaft. Wir haben dann mehrere Unterklassen, die den Rest der wichtigen Daten annotieren. Wir haben jedoch eine Unterklasse, in der die Annotation der übergeordneten Klasse ignoriert werden soll, damit sie nicht gemarshallt wird. Hier ist ein Beispielcode.
Elternklasse:
%Vor%Nun zur Unterklasse:
%Vor%Wenn ich eine Instanz von ConcreteClass erstelle, bekomme ich folgendes XML:
%Vor%Wo ich XML so möchte:
%Vor%Wir haben andere Implementierungen von Request, die allerdings die UUID benötigen, dies ist nur ein Spezialfall. Gibt es eine Möglichkeit, das UUID-Feld in meinem ConcreteRequest zu ignorieren?
Ich hoffe, ich habe dein Problem verstanden. Hier ist die Lösung.
JAXB bietet @XmlTransient(javax.xml.bind.annotation.XmlTransient)
(javadoc) um jedes Feld während des Marshalling zu ignorieren.
Überschreiben Sie das Feld "uuid" als @XmlTransient in Ihrer abgeleiteten Klasse (ConcreteRequest.class) zusammen mit der entsprechenden Getter / Setter-Methode. Es ist auch notwendig, die Getter / Setter-Methoden zu überschreiben, diese werden während des Marshalling aufgerufen.
%Vor%Dies überschreibt Ihr Basisklassenattribut.
Kontaktieren Sie mich für weitere Informationen.
Tags und Links jaxb marshalling