Como instanciar um objeto JAXBElement <>>?

120

Eu preciso criar um desses, conforme a interface exige ... alguém pode me informar como criar um, pois não parece haver um conjunto definido?

miguel
fonte

Respostas:

179

Ao importar o WSDL, você deve ter uma ObjectFactoryclasse que deve ter vários métodos para criar vários parâmetros de entrada.

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

Aqui está como eu faço isso. Você precisará obter o URL do espaço para nome e o nome do elemento no código gerado.

new JAXBElement(new QName("http://www.novell.com/role/service","userDN"),
                new String("").getClass(),testDN);
JC.
fonte
6
Itse melhor usar classe ObjectFactory como mencionado abaixo em vez de usar construtor JAXBElement
Harish
3

Outra alternativa:

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

Então:

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

Não sei por que você acha que não há construtor. Veja a API .

Matthew Flaschen
fonte