Mit Jaxb2Marshaller mit mehreren Klassen mit gleichem @XmlRootElement Namen
Arbeite ich an einem web service mit spring-mvc und Jaxb2Marshaller.
Ich habe zwei Klassen, beide versehen mit der gleichen @XmlRootElement
Namen
@XmlRootElement(name="request")
class Foo extends AstractRequest {
}
@XmlRootElement(name="request")
class Bar extends AbstractRequest {
}
Alle drei Klassen (AbstractRequest, Foo, Bar) sind im classesToBeBound Liste in der gleichen Reihenfolge
Nun die Anfrage, die verwendet Bar funktioniert gut. Aber die, die verwendet Foo wirft eine Ausnahme classcastexception-Fehler beim unmarshalling mit Nachricht Bar cannot be cast to Foo
Den controller-code ist,
Source source = new StreamSource(new StringReader(body));
Foo request = (Foo) this.jaxb2Marshaller.unmarshal(source);
denke ich dies ist passiert, weil Bar Art des überwiegenden Foo, da es geschrieben, nachdem Foo in der Liste der Klassen gebunden zu sein, in der spring-servlet.xml Datei
Aber ich bin auch mit mehreren Klassen versehen mit @XmlRootElement(name="response")
und marshalling der Antwort nicht geben, keine problem.
Gibt es eine Möglichkeit, an die Klasse verwendet werden, durch die jaxb2Marshaller für unmarshalling ?
- Nein, es gibt keine Möglichkeit, das zu tun. Sie müssen umgestalten, Ihr design, um Sie voneinander unterscheiden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Übergeben Sie die Klasse Jaxb2Marshaller vor unmarshal:
Können Sie einen Unmarshaller aus der Jaxb2Marshaller, dann übergeben Sie die Klasse, die Sie möchten unmarshal als parameter an die unmarshal-Methode Quelle:
Weitere Informationen finden Sie unter: