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;
}

Обратитесь к этому вопросу / ответу переполнения стека

Другие вопросы по тегам