【问题标题】:JAXBElementRef does not generate nillable="true"JAXBElementRef 不生成 nillable="true"
【发布时间】:2013-11-19 11:54:35
【问题描述】:

对于我的 Web 服务请求,我想区分请求的 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 的那个。

【问题讨论】:

标签: java jaxb jaxbelement


【解决方案1】:

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

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

参考这个Stack Overflow question/answer

【讨论】:

  • 要是这么简单就好了……当我使用这种表示法时,我将无法在我的 java 代码中检查该属性是否为真。这就是为什么我使用@XmlElementRef
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-16
相关资源
最近更新 更多