Warum hat JAXB generateElementProperty = false nicht den gewünschten Effekt?

8

Ich führe eine wsimport-Aufgabe mit der folgenden Bindungsdatei aus:

%Vor%

Dies führt jedoch zu Klassen mit JAXBElement<String> anstelle von String , wie in getUserSummaryOrTypeOrLogLevel() unter

angezeigt %Vor%

Der Eintrag in der xsd-Datei, von der diese Klasse generiert wird, ist unten:

%Vor%

Hier ist das Maven-Plugin von meiner Pom-Datei

%Vor%

Kann jemand etwas darüber sagen, warum dies geschieht? Ich möchte String anstelle von JAXBElement<String> verwenden und alles, was ich auf SO und anderswo gefunden habe, legt nahe, dass generateElementProperty=false funktioniert, aber nicht.

    
conorgriffin 10.07.2015, 09:31
quelle

2 Antworten

8

Das JAXBElement ist obligatorisch, wenn es ein xsd:choice gibt, wobei entweder foo oder bar Elemente vorkommen können und sie vom selben Typ sind. Ein einfacher String reicht nicht aus, um zu markieren, welches Element gemarshallt werden soll.

JAXBElement ist auch erforderlich, wenn die Elemente nillable="true" und minOccurs="0" vorhanden sind oder wenn zwei globale Elemente mit demselben Namen xsd:complexType vorhanden sind.

    
Xstian 17.07.2015, 14:37
quelle
1

können Sie ein anderes Plugin versuchen, um sicherzustellen, dass der Fehler in JAXB ist? In unserem Projekt verwenden wir:

%Vor%

und es funktioniert wie erwartet

UPDATE:

Du hast Recht Plugin ist in Ordnung. Es ist weil Wahlelement. Vermutlich kopiert mit das

    
hudi 13.07.2015 09:59
quelle

Tags und Links