我正在使用apache-cxf进行webservice,生成的响应不包含值为null的元素(比如java.lang.String类型)。 以下是xsd:
<xs:complexType name="venueDetails">
<xs:sequence>
<xs:element minOccurs="0" name="contactDetails" type="xs:string"/>
<xs:element minOccurs="0" name="date" type="xs:string"/>
<xs:element minOccurs="0" maxOccurs="1" name="description1" type="xs:string" nillable = "true"/>
<xs:element minOccurs="0" maxOccurs="1" name="description2" type="xs:string" nillable = "true"/>
<xs:element minOccurs="0" name="name" type="xs:string"/>
<xs:element minOccurs="0" name="placePicture" type="xs:string"/>
<xs:element minOccurs="0" name="time" type="xs:string"/>
</xs:sequence>
</xs:complexType>
我期待SOAP
响应中的元素“description1”和“description2”,即使它们包含空值。但SOAP
响应不包含这些标记,我为它们添加了null。
请告诉我哪里出错了?
答案 0 :(得分:1)
而不是使用:
<xs:element minOccurs="0" maxOccurs="1" name="description1" type="xs:string" nillable = "true"/>
<xs:element minOccurs="0" maxOccurs="1" name="description2" type="xs:string" nillable = "true"/>
尝试使用:
<xs:element minOccurs="0" maxOccurs="1" name="description1" type="xs:string"/>
<xs:element minOccurs="0" maxOccurs="1" name="description2" type="xs:string"/>
可以为nillable的元素,意味着元素可以是空的 没有导致验证错误
看看here。您已定义minOccurs="0"
,因此不需要nillable="true"
。