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

Java jaxb生成的类的默认初始化值,java,jaxb,jax-ws,cxf,wsdl2java,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; } } 注意,在创建类时,该条被初始化为t

我有一个简单的课程:

@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"/>

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

JAXB annotation@xmlementdefaultvalue=defValue是您所需要的

我认为,如果字段为null,则在解组过程中指定默认值-而不是schemaLook中的默认值在这个问题上:我添加了@XmlElementdefaultValue=defValue,但正如您所看到的,java的jaxb实现在生成类时并不尊重这一点——您是否认为这是java的jaxb实现中的限制?我记得,当您从*.xsd文件创建java存根时,默认情况下将创建此注释。你用过xjc吗?我用过cxf的wsdl2java。我不确定它在内部使用了什么。我会调查的。
@XmlAccessorType(XmlAccessType.FIELD)
public class foo {
    @XmlElement(defaultValue = "true")
    protected boolean bar;

    boolean getBar () {
        return this.bar;
    }

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