2013-11-19 4 views
5

для запроса моей веб-службы, я хотел отличаться от запрашиваемого значения null и отсутствующего тега. Другими словами, мне нужно было следующее определение элемента:JAXBElementRef не генерирует nillable = "true"

<xs:element minOccurs="0" name="minzeronil" nillable="true" type="xs:string"/> 

Я разработал веб-сервис кода первой, поэтому я определил элемент, используя JAXBElementRef:

@XmlRegistry 
public class ObjectFactory { 

    @XmlElementDecl(name = "minzeronil", namespace = XmlNamespace.MY_SERVICE) 
    public JAXBElement<String> createMinzeronil(final String value) { 
    return new JAXBElement<String>(new QName(XmlNamespace.MY_SERVICE, "minzeronil"), String.class, value); 
    } 

} 

Теперь, я ожидал увидеть nillable = "true" в определение элемента. Вместо этого я получил:

<xs:element name="minzeronil" type="xs:string"/> 
<xs:element ref="tns:minzeronil" minOccurs="0"/> 

Как я могу генерировать nillable = "true" из моего кода Java? ... и до сих пор используют JAXBElement в моем коде и его методы, как isNil() ...

UPDATE: развернуть код на GlassFish, так GlassFish является тот, который генерирует WSDL и XSD.

+0

Следующие действия могут помочь: http://stackoverflow.com/questions/19665550/jaxb-element-that-is-both -optional-and-nillable/19666240 # 19666240 –

ответ

0

использование @XmlElement(nillable = true) в вашем Java Class

@XmlElement(nillable=true) 
public String getAString() { 
    return AString; 
} 

Обратитесь к этому Stack Overflow question/answer

+0

, если бы это было так просто ... когда я использую это обозначение, я не смогу проверить, является ли атрибут истинным в моем java-коде. Вот почему я использовал '@ XmlElementRef' – user1414745

Смежные вопросы