Jak utworzyć wystąpienie obiektu JAXBElement <String>?

120

Muszę utworzyć jeden z nich, ponieważ wymaga tego interfejs ... czy ktoś może mi powiedzieć, jak go utworzyć, ponieważ nie wydaje się, aby nie było zdefiniowane?

miguel
źródło

Odpowiedzi:

179

Kiedy importowałeś WSDL, powinieneś mieć ObjectFactoryklasę, która powinna mieć kilka metod tworzenia różnych parametrów wejściowych.

ObjectFactory factory = new ObjectFactory();
JAXBElement<String> createMessageDescription = factory.createMessageDescription("description");
message.setDescription(createMessageDescription);
Gaurav
źródło
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
źródło
7

Oto jak to robię. Będziesz musiał pobrać adres URL przestrzeni nazw i nazwę elementu z wygenerowanego kodu.

new JAXBElement(new QName("http://www.novell.com/role/service","userDN"),
                new String("").getClass(),testDN);
JC.
źródło
6
Lepiej jest używać klasy ObjectFactory, jak wspomniano poniżej, zamiast używać konstruktora JAXBElement
Harish
3

Inna alternatywa:

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

Następnie:

System.out.println(element.getValue()); // Result: Your message
alditis
źródło
2

Nie wiem, dlaczego myślisz, że nie ma konstruktora. Zobacz API .

Matthew Flaschen
źródło