2010-02-26 3 views
1

Nous utilisons le framework CXF avec mapper Aegis pour le serveur Java et le client .NET. Par défaut, minOccurs = 0 pour toutes les variables dans les classes de WSDL. Nous utilisons ce paramètre dans la configuration CXF pour l'empêcher:CXF: Set minOccurs = 0 pour les éléments des tableaux

<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> 

Mais nous avons un autre problème avec tableau. Pour le tableau que nous avons un tel code dans WSDL:

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

tableaux Donc vides ne sont pas acceptés:

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

Est-il possible, d'ajouter une annotation à un tableau, qui a mis minOccurs = "0" à des éléments de le tableau (pas au tableau entier)? Ou est-il possible de définir il est la configuration d'égide pour tous les tableaux?

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

Répondre

0

Vous devez utiliser un mapping file:

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