Comment instancier un objet JAXBElement <String>?

120

J'ai besoin d'en créer un car l'interface l'exige ... Quelqu'un peut-il s'il vous plaît me faire savoir comment en créer un, car il ne semble pas y avoir de définition?

miguel
la source

Réponses:

179

Lorsque vous avez importé le WSDL, vous devriez avoir une ObjectFactoryclasse qui devrait avoir un tas de méthodes pour créer divers paramètres d'entrée.

ObjectFactory factory = new ObjectFactory();
JAXBElement<String> createMessageDescription = factory.createMessageDescription("description");
message.setDescription(createMessageDescription);
Gaurav
la source
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
la source
7

Voici comment je le fais. Vous devrez obtenir l'URL de l'espace de noms et le nom de l'élément à partir de votre code généré.

new JAXBElement(new QName("http://www.novell.com/role/service","userDN"),
                new String("").getClass(),testDN);
JC.
la source
6
Il est préférable d'utiliser la classe ObjectFactory comme mentionné ci-dessous plutôt que d'utiliser le constructeur JAXBElement
Harish
3

Autre alternative:

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

Ensuite:

System.out.println(element.getValue()); // Result: Your message
aldite
la source
2

Je ne sais pas pourquoi vous pensez qu'il n'y a pas de constructeur. Voir l'API .

Matthew Flaschen
la source