2013-04-08 7 views
3

J'ai le problème suivant. Je veux faire un service web, qui a beaucoup de paramètres pour l'entrée. Certains d'entre eux sont de type double. La chose est que certains doubles ne sont pas nécessaires et peuvent être transmis à mon service en tant que balises vides, commeComment ignorer les paramètres vides dans le service Web?

<param xsi:type="xsd:double"></param> 

WebLogic, donc, avant de passer à mon code tente d'analyser cette double et je reçois

<faultstring>empty String</faultstring> 

réponse à l'exception de ce ma question principale

<bea_fault:stacktrace xmlns:bea_fault="http://www.bea.com/servers/wls70/webservice/fault/1.0.0">java.lang.NumberFormatException: empty String 
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1011) 
at java.lang.Double.parseDouble(Double.java:540) 

est, comment puis-je obtenir ces balises vides comme nulle dans la variable double? Ou comment puis-je spécifier cette valeur vide avant que WebLogic ne tente de l'analyser? Merci d'avance!

+0

Pouvez-vous dire explicitement comme nul comme

+0

@better_use_mkstemp De cette façon, WS génère une exception qui indique que le paramètre est manquant, le point est que Je ne peux pas supprimer ces balises, même si elles sont vides, mais doivent prendre la valeur de balise vide comme nulle, sans que WL essaye de l'analyser. – Kiman

+0

essayez d'ajouter cet attribut: 'minOccurs =" 0 "' (ajuste son espace de noms si nécessaire) – acdcjunior

Répondre

1

Veuillez regarder dans votre XSD où la structure du message est définie. Concentrez-vous sur deux attributs différents mais spéciaux qui peuvent être définis pour n'importe quel élément dans le XSD pour le format de message. ce sont: minOccurs et nillable. La réponse à votre problème réside dans la mise en l'attribut nillable à « true » (ce qui est faux par défaut.)

permet de voir ce que signifie Nillable, T/F valeur nillable signifie que si un élément peut avoir une valeur vide (Chaîne vide) ou non.

Donc, si nillable est défini comme vrai

< element name = "anyelement" nillable = "true" /> dans votre XSD alors cet élément peut être comme ces < anyEement> </anyelement > Ou < anyElement /> dans votre requête/réponse SOAP.

mais si nillable est défini sur false (ce qui est le cas par défaut) alors vous pouvez vous attendre à l'erreur que vous obtenez en ce moment.

J'espère que ça aide. Merci.

Questions connexes