JAXBElementRef не генерирует nillable="true"
Для запроса на мой веб-сервис, я хотел бы отличаться между запрошенными null
значение и отсутствующий тег. Другими словами, мне нужно было следующее определение элемента:
<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()
...
ОБНОВЛЕНИЕ: я развернул код на glassfish, так что именно Glassfish генерирует wsdl и xsd.
1 ответ
Решение
Использование @XmlElement(nillable = true)
в вашем классе Java
@XmlElement(nillable=true)
public String getAString() {
return AString;
}
Обратитесь к этому вопросу / ответу переполнения стека