Wie zu ignorieren, JAXB annotierte Eigenschaften in einer übergeordneten Klasse?
Haben wir eine Klasse mit JAXB Annotationen auf eine Eigenschaft. Wir haben dann mehrere Unterklassen, die kommentieren den rest der wichtigen Daten. Wir haben eine Unterklasse, aber da, wo wir wollen, ignorieren Sie die übergeordnete Klasse annotation, so dass es nicht gemarshallt. Hier einige Beispiel-code.
Übergeordneten Klasse:
@XmlType(name="Request")
@XmlAccessorType(XmlAccessorType.NONE)
public abstract class Request {
@XmlElement(required=true)
private UUID uuid;
... setter/getter
}
Nun für die Unterklasse:
@Xsd(name="concreteRequest")
@XmlRootElement("ConcreteRequest")
@XmlType(name="ConcreteRequest")
@XmlAccessorType(XmlAccessorType.FIELD)
public class ConcreteClass {
@XmlElement(required=true)
private String data1;
@XmlElement(required=true)
private String data1;
... setters/getters ...
}
Wenn ich masrhall eine Instanz von ConcreteClass bekomme ich die folgende XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConcreteRequest>
<uuid>uuid</uuid>
<data1>data</data1>
<data2>data</data3>
</ConcreteRequest>
Hier will ich die XML wie diese:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConcreteRequest>
<data1>data</data1>
<data2>data</data3>
</ConcreteRequest>
Wir haben andere Implementierungen der Anfrage, jedoch benötigen Sie die UUID, dies ist nur ein spezieller Fall. Gibt es eine Möglichkeit zu ignorieren, die UUID-Feld in meinem ConcreteRequest?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hoffe, ich Verstand Ihr problem. Hier ist die Lösung.
JAXB bietet
@XmlTransient(javax.xml.bind.annotation.XmlTransient)
(javadoc -) zu ignorieren, Feld während des marshalling.Überschreiben Sie das Feld "uuid" als @XmlTransient in der abgeleiteten Klasse (ConcreteRequest.class) zusammen mit den correspoding Getter - /Setter-Methode. Es ist notwendig, um das überschreiben der Getter/Setter-Methoden auch, diese von Ihnen aufgerufen werden während marshalling.
Dies überschreibt Ihre Base-Class-Attribut.
Wieder zu mir für mehr Informationen.
Können Sie
auf die Eltern-Klasse, und
abgeleitete Klasse.