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;
}
}