Bonjour,

j'utilise Axis2 1.4.1 (je n'ai pas le choix car on est en Java 1.4 et c'est la seule version qui a été qualifié dans l'entreprise).

J'ai un WSDL avec une réponse qui contient des éléments facultatifs

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
<xsd:element name="xxxxResponse">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="errorCode"       type="xsd:string" maxOccurs="1" minOccurs="1"/>
            <xsd:element name="prixHT"          type="xsd:float" maxOccurs="1" minOccurs="0"/>
            <xsd:element name="prixTTC"         type="xsd:float" maxOccurs="1" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>
le problème c'est que dans la partie client la classe xxxxResponse contient des getters getPrixHT() et getPrixTTC() retournant un type primitif float.
Donc, impossible d'avoir null. Même en ajoutant nillable="true" ça ne change rien.

La question est comment savoir si le prixHT et prixTTC on été retourné au non dans la réponse ?

Dans le code généré par Axis2 j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
/**
   * Auto generated setter method
   * @param param PrixHT
   */
   public void setPrixHT(float param){
 
           // setting primitive attribute tracker to true
 
                   if (java.lang.Float.isNaN(param)) {
               localPrixHTTracker = false;
 
           } else {
              localPrixHTTracker = true;
           }
 
                this.localPrixHT=param;
 
 
   }
Est-ce que si prixHT et prixTTC ne sont pas retourné dans la réponse il faut tester dans la partie client avec java.lang.Float.isNaN ?

Merci