Jaxb使用"get"而不是"is"前缀创建布尔方法访问者名称

hev*_*evi 4 java xml xsd jaxb maven

使用jaxb2-maven-plugin和jaxb-xjc,在生成类时,jaxb创建带有get前缀的布尔访问器,但我希望它使用java约定"is"创建.

这是xsd:

    <xsd:complexType name="QueryWorkgroupRequestType">
    <xsd:sequence>
    ...
        <xsd:element name="disabled" type="xsd:boolean" minOccurs="0" maxOccurs="1" />
    ...
    </xsd:sequence>
</xsd:complexType>
Run Code Online (Sandbox Code Playgroud)

并且创建的方法是;

public Boolean getDisabled() {
    return disabled;
}
Run Code Online (Sandbox Code Playgroud)

但我想要;

public Boolean isDisabled() {
    return disabled;
}
Run Code Online (Sandbox Code Playgroud)

我试过了

<xsd:annotation> <xsd:appinfo> <jaxb:globalBindings enableJavaNamingConventions="true" generateIsSetMethod="true"/> </xsd:appinfo> </xsd:annotation> 但没有机会.

**已解决**

最后我可以解决这个问题,maven正在使用jdk 1.8,不知何故使用1.8质量它.使用1.6固定它,现在按需工作.

Ian*_*rts 6

isJava Bean访问器方法的前缀仅对基本类型的属性有效boolean.对于所有其他类型(包括java.lang.Boolean引用类型),唯一有效的前缀将被识别为bean属性访问器get.

如果元素不可为空(即它没有minOccurs="0")那么它将被绑定到类型的属性boolean而不是Boolean并且获得is访问器.

  • XJC 中存在一个错误,它为布尔值生成 is*,根据 Java Bean 规范,这是错误的。您可以传递 XJC 标志 `-enableIntrospection` 来生成正确的 getter。请参阅https://github.com/javaee/jaxb-v2/issues/131 (2认同)