JAXBElementRef不生成nillable =“true”

时间:2013-11-19 11:54:36

标签: java jaxb jaxbelement

对于我的网络服务请求,我想区分请求的null值和缺少的标记。换句话说,我需要以下元素定义:

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

我首先开发了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);
  }

}

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

请参阅此Stack Overflow question/answer