Wie instanziiere ich ein JAXBElement <String> -Objekt?

120

Ich muss eine davon erstellen, wie es die Schnittstelle erfordert ... kann mir bitte jemand mitteilen, wie eine erstellt wird, da anscheinend kein c'tor definiert ist?

Miguel
quelle

Antworten:

179

Wenn Sie die WSDL importiert haben, sollten Sie über eine ObjectFactoryKlasse verfügen, die eine Reihe von Methoden zum Erstellen verschiedener Eingabeparameter enthält.

ObjectFactory factory = new ObjectFactory();
JAXBElement<String> createMessageDescription = factory.createMessageDescription("description");
message.setDescription(createMessageDescription);
Gaurav
quelle
7
ObjectFactory fact = new ObjectFactory();   
JAXBElement<String> str = fact.createCompositeTypeStringValue("vik");    
comp.setStringValue(str);
CompositeType retcomp = service.getDataUsingDataContract(comp);
System.out.println(retcomp.getStringValue().getValue());
vik
quelle
7

Hier ist, wie ich es mache. Sie müssen die Namespace-URL und den Elementnamen aus Ihrem generierten Code abrufen.

new JAXBElement(new QName("http://www.novell.com/role/service","userDN"),
                new String("").getClass(),testDN);
JC.
quelle
6
Es ist besser, die ObjectFactory-Klasse wie unten erwähnt zu verwenden, als den JAXBElement-Konstruktor
Harish
3

Andere Alternative:

JAXBElement<String> element = new JAXBElement<>(new QName("Your localPart"),
                                                String.class, "Your message");

Dann:

System.out.println(element.getValue()); // Result: Your message
Alditis
quelle
2

Ich weiß nicht, warum du denkst, dass es keinen Konstruktor gibt. Siehe die API .

Matthew Flaschen
quelle