IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Java Discussion :

WS : Gestion des valeurs null dans le résultat


Sujet :

Services Web Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 34
    Points : 32
    Points
    32
    Par défaut WS : Gestion des valeurs null dans le résultat
    Bonjour,
    j'ai implémenté un WS codé en Java.
    Une des méthodes de mon WS retourne une liste de Produit issus d'une BD.
    Ces Produits ont des attributs qui peuvent être nulles.
    Or quand c'est le cas, au lieu de me retourner une balise du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <attribut/> ou <attribut></attribut>
    il ne me retourne rien. Ce qui ne me facilite pas la lecture du résultat.
    Exemple de retour :
    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
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
       <soapenv:Body>
          <ns2:getProduitsParNomResponse xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
             <produit>
                <dateLimiteUtilisation>2013-07-31T00:00:00+02:00</dateLimiteUtilisation>
                <dateOuverture>2013-02-01T00:00:00+01:00</dateOuverture>
                <nbJourApresOuverture>30</nbJourApresOuverture>
                <nom>MASTIC</nom>
              </produit>
             <produit>
                <dateLimiteUtilisation>2013-07-31T00:00:00+02:00</dateLimiteUtilisation>
                <nbJourApresOuverture>30</nbJourApresOuverture>
                <nom>MASTOC</nom>
             </produit>
          </ns2:getProduitsParNomResponse>
       </soapenv:Body>
    </soapenv:Envelope>
    On voit que le 2e produit a un attribut de moins (dateOuverture) car dans la base cette colonne est nulle pour ce produit. Comment faire pour que le résultat fasse apparaitre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <dateOuverture/> ou <dateOuverture></dateOuverture>
    ?

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 34
    Points : 32
    Points
    32
    Par défaut
    J'ai trouvé la solution.

    Dans la classe Produit, au niveau des attributs qui peuvent être nulles, j'ajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @XmlElement(nillable=true)

  3. #3
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Si tu veux qu'une valeur vide apparaisse quand même dans ton xml en tant que balise vide, il faut que dans ton wsdl tu précise que le minOccurs de ta balise est 1 et non 0.
    Dans ce cas la balise sera toujours présente, même si vide.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 34
    Points : 32
    Points
    32
    Par défaut
    Je fais générer mon xml avec JAXB, donc je ne manipule pas directement le xml.
    Du coup, je pense que mes solutions se trouvent dans les annotations à ajouter dans ma classe.

  5. #5
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    dans ta balise @XmlElement rajoute un required = true. Ce devrait faire l'affaire
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 34
    Points : 32
    Points
    32
    Par défaut
    J'avais déjà essayé avec required = true et ça ne fonctionne pas : la balise est toujours absente quand la donnée est nulle.
    Il n'y a que nillable=true qui fonctionne.

    Merci pour ta réponse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. QSpinBox ou QDateEdit : gestion des valeurs NULL
    Par Dr FMeuuh dans le forum Qt
    Réponses: 6
    Dernier message: 07/04/2014, 11h11
  2. Réponses: 3
    Dernier message: 22/01/2013, 16h23
  3. Réponses: 1
    Dernier message: 04/06/2010, 13h40
  4. Gestion des valeurs nulles dans un graphique
    Par ben1f2l dans le forum Jasper
    Réponses: 2
    Dernier message: 21/01/2008, 20h30
  5. [SQL] Affichage des valeurs nulles dans un Count
    Par at_first dans le forum Access
    Réponses: 4
    Dernier message: 06/03/2007, 11h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo