JAXBElementRef不生成nillable ="true"

use*_*745 5 java jaxb jaxbelement

对于我的Web服务请求,我想要求请求null值和缺少标记之间的区别.换句话说,我需要以下元素定义:

<xs:element minOccurs="0" name="minzeronil" nillable="true" type="xs:string"/>
Run Code Online (Sandbox Code Playgroud)

我首先开发了Web服务代码,所以我使用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);
  }

}
Run Code Online (Sandbox Code Playgroud)

现在,我希望nillable = "true"在元素的定义中看到.相反,我得到了:

<xs:element name="minzeronil" type="xs:string"/>
<xs:element ref="tns:minzeronil" minOccurs="0"/>
Run Code Online (Sandbox Code Playgroud)

如何nillable = "true"从我的java代码生成?...仍然在我的代码中使用JAXBElement,其方法如isNil()...

更新:我在glassfish上部署代码,因此glassfish是生成wsdl和xsd的代码.

小智 0

@XmlElement(nillable = true)在您的 Java 类中使用

@XmlElement(nillable=true)
public String getAString() {
    return AString;
}
Run Code Online (Sandbox Code Playgroud)

请参阅此堆栈溢出问题/答案