¿Cómo puedo crear una instancia de un objeto JAXBElement <String>?

120

Necesito crear uno de estos ya que la interfaz lo requiere ... ¿alguien puede decirme cómo crear uno, ya que no parece haber un c'tor definido?

miguel
fuente

Respuestas:

179

Cuando importó el WSDL, debería tener una ObjectFactoryclase que debería tener varios métodos para crear varios parámetros de entrada.

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

Así es como lo hago. Deberá obtener la URL del espacio de nombres y el nombre del elemento de su código generado.

new JAXBElement(new QName("http://www.novell.com/role/service","userDN"),
                new String("").getClass(),testDN);
JC.
fuente
6
Es mejor usar la clase ObjectFactory como se menciona a continuación en lugar de usar el constructor JAXBElement
Harish
3

Otra alternativa:

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

Luego:

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

No sé por qué cree que no hay constructor. Ver la API .

Matthew Flaschen
fuente