我有一个带有数据定义的XSD文件。基于XSD文件,基于ant的目标执行XJC命令以从XSD生成Java类。
我遇到的问题是XSD <attribute>
标记;当我将默认值设置为'true'时,它采用包装器布尔值而不是原始布尔值。
<xs:element name="TagElement">
<xs:complexType>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="type" use="required" type="xs:int"/>
<xs:attribute name="booleanAttr" type="xs:boolean" default="true" >
</xs:attribute>
</xs:complexType>
</xs:element>
上面的XSD定义生成包装器布尔值。
如果不存在default
属性,而是required="true"
,那么它可以正常工作。所以,这很好用:
<xs:attribute name="booleanAttr" type="xs:boolean" use="required" />
如何解决这个问题?如何确保生成的Java类具有布尔基本类型而不是包装器布尔值?
XSD生成的Java代码:
@XmlAttribute(name = "booleanAttr")
protected Boolean booleanAttr;
public boolean isBooleanAttr() {
if (booleanAttr == null) {
return true;
} else {
return booleanAttr;
}
}
public void setBooleanAttr(Boolean value) {
this.booleanAttr = value;
}