Jaxb CXF中的默认双类型元素为null
我正在使用CXF wsdl2java,在我的模式中有以下complexType:Jaxb CXF中的默认双类型元素为null,jaxb,cxf,wsdl2java,Jaxb,Cxf,Wsdl2java,我正在使用CXF wsdl2java,在我的模式中有以下complexType: <complexType name="ABCType"> <sequence> <element name="xxx" type="int" maxOccurs="1" minOccurs="1"> </element> <element name="yyy" type="do
<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>
当我为上面的complexType生成Java类时。我看到yyy属性是双重类型的。当yyy元素未作为请求的一部分出现时,如何要求CXF将yyy值默认为null而不是0.0
谢谢 不确定上述代码是如何生成的。如果字段为requiredmin=1、max=1,则cxf codegen生成基本类型;如果其optionalmin=0和max=1,则生成包装器类型。在java中,引用类型被初始化为null。因此yyy将为空 无论如何,如果您需要在原语类型中添加一个默认值,那么可以为下面的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>
您能显示生成的Java类吗?Ian我已经添加了上面的类,它实际上不是实际的类,但生成的代码是相同的。
<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>