我正在使用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。
谢谢!
答案 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>