默认Double类型元素在CXF中为null

时间:2014-12-03 16:30:13

标签: jaxb cxf wsdl2java

我正在使用CXF wsdl2java并且在我的架构中具有以下complexType:

 <complexType name="ABCType">
    <sequence>
        <element name="xxx" type="int"   maxOccurs="1"
            minOccurs="1">
        </element>
        <element name="yyy" type="double" maxOccurs="1"
            minOccurs="0">
        </element>
</complexType>

以下是生成的类:

public class ABCType
implements Serializable
{

private final static long serialVersionUID = 1L;
protected Integer xxx;
protected Double yyy;



public Double getYYY() {
    return yyy;
}


public void setYYY(Double value) {
    this.yyy= value;
}
}

当我为上面的complexType生成Java类时。我看到“yyy”属性属于Double类型。当yyy元素不作为请求的一部分出现时,我如何要求CXF将“yyy”值默认为null而不是0.0。

谢谢!

1 个答案:

答案 0 :(得分:0)

不确定如何生成上述代码。如果需要字段(min = 1,max = 1),则cxf codegen生成基本类型;如果是可选的,则生成包装类型(min = 0和max = 1)。并且在java中,引用类型被初始化为null。因此,yyy将为null

无论如何,如果您需要在基本类型中添加默认值,请假设为xsd

以下
<element name="xxx" type="int"   maxOccurs="1" minOccurs="1" default="4" >

您可以将默认生成器扩展添加到cxf-codegen插件,如下所示

                 <plugin>
                        <groupId>org.apache.cxf</groupId>
                        <artifactId>cxf-codegen-plugin</artifactId>
                        <version>3.0.1</version>
                        <executions>
                            <execution>
                                <id>generate-sources</id>
                                <phase>generate-sources</phase>
                                <configuration>
                                    <wsdlOptions>
                                        <wsdlOption>
                                            <wsdl>${basedir}/src/main/resources/mywsdl.wsdl</wsdl>
                                            <extraargs>
                                                <extraarg>-impl</extraarg>
                                                <extraarg>-verbose</extraarg>
                                                <extraarg>-xjc-Xdv</extraarg>
                                            </extraargs>
                                        </wsdlOption>
                                    </wsdlOptions>
                                </configuration>
                                <goals>
                                    <goal>wsdl2java</goal>
                                </goals>
                            </execution>
                        </executions>
                        <dependencies>
                            <dependency>
                                <groupId>org.apache.cxf.xjcplugins</groupId>
                                <artifactId>cxf-xjc-dv</artifactId>
                                <version>${cxf.version}</version>
                            </dependency>
                        </dependencies>
                    </plugin>