jaxb生成的类的默认初始化值

时间:2011-12-08 17:20:52

标签: java jaxb jax-ws cxf wsdl2java

我有一个简单的课程:

@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class foo {
    boolean bar = true;

    boolean getBar () {
        return this.bar;
    }

    void setBar (boolean bar) {
        this.bar = bar;
    }
}

请注意,创建类时,该栏会初始化为true。

当从生成的jaxb架构生成此类时,它将失去默认初始化。是否有任何jaxb注释可以设置默认初始化值?或者其他任何方式来做到这一点?

更新: 添加@XmlElement(defaultvalue =“true”),如下所示:

@XmlElement (defaultvalue="true")
boolean getBar () {
    return this.bar;
}

生成以下架构:

<xs:element default="true" name="bar" type="xs:boolean"/>

然而,在重构类时,Java的JAXB实现并不尊重这一点。生成的类看起来像这样:

@XmlAccessorType(XmlAccessType.FIELD)
public class foo {
    @XmlElement(defaultValue = "true")
    protected boolean bar;

    boolean getBar () {
        return this.bar;
    }

    void setBar (boolean bar) {
        this.bar = bar;
    }
}

请注意,对于bar,我们已经丢失了默认初始化值true。

1 个答案:

答案 0 :(得分:0)

JAXB注释@XmlElement(defaultValue = "defValue")是您所需要的。 (javadoc