2010-02-26 103 views
1

我們對java服務器和.NET客戶端使用帶有aegis映射器的CXF框架。 默認情況下,對於WSDL中的類中的所有變量,我們都有minOccurs = 0。 我們用這樣的設置在CXF配置,以防止它:CXF:爲數組元素設置minOccurs = 0

<bean id="aegisBean" class="org.apache.cxf.aegis.databinding.AegisDatabinding" scope="prototype"> 
    <property name="configuration"> 
     <bean class="org.apache.cxf.aegis.type.TypeCreationOptions"> 
      <property name="defaultNillable" value="false"/> 
      <property name="defaultMinOccurs" value="1"/> 
     </bean> 
    </property> 
</bean> 

但我們有陣列的另一個問題。對於數組我們在WSDL有這樣的代碼:

<xsd:complexType name="ArrayOfDetails"> 
<xsd:sequence> 
    <xsd:element maxOccurs="unbounded" name="Details" type="tns:Details"/> 
</xsd:sequence> 
</xsd:complexType> 

所以空數組是不能接受的:

org.apache.cxf.interceptor.Fault: The number of elements in {http://dto.WebServices.com}ArrayOfDetails does not meet the mini mum of 1 

是否有可能,要註釋添加到陣列中,其中設置的minOccurs =「0」到的元素數組(而不是整個數組)?或者有可能將它設置爲所有陣列的aegis配置?

<xsd:element minOccurs="0" maxOccurs="unbounded" name="Details" type="tns:Details"/> 

回答

0

您應該使用mapping file

<mappings> 
    <mapping name="ArrayOfDetails"> 
    <property name="Details" minOccurs='0'/> 
    </mapping> 
</mappings>