135 votes

Comment instancier un objet JAXBElement<String> ?

Je dois en créer un car l'interface l'exige. Quelqu'un peut-il me dire comment en créer un, car il ne semble pas y avoir de code défini ?

210voto

Gaurav Points 446

Lorsque vous avez importé le WSDL, vous devriez avoir un fichier ObjectFactory qui devrait avoir un ensemble 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);

11voto

vik Points 51
ObjectFactory fact = new ObjectFactory();   
JAXBElement<String> str = fact.createCompositeTypeStringValue("vik");    
comp.setStringValue(str);
CompositeType retcomp = service.getDataUsingDataContract(comp);
System.out.println(retcomp.getStringValue().getValue());

8voto

JC. Points 9

Voici comment je procède. Vous devrez obtenir l'URL de l'espace de nom 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);

7 votes

Il est préférable d'utiliser la classe ObjectFactory comme indiqué ci-dessous plutôt que d'utiliser le constructeur de JAXBElement.

4voto

alditis Points 1496

Autre alternative :

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

Ensuite :

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

2voto

Matthew Flaschen Points 131723

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X