WaveMaker: problemi con stringhe e numeri

Pare che in JavaScript tutto venga riconosciuto come stringa…”no buono!”

In pratica la mia situazione era questa: il web service (scritto in Java) che riceve i dati ha una particolare struttura che viene usata per scrivere i dati sul db. In pratica usa dei dataslots che possono contenere stringhe, numeri, ecc… Nel codice XML del web service per l’oggetto dataslot ci sono diversi campi fra qui: valore e type. Il valore e’, come ci si aspetta, il valore della variabile legata al dataslot, mentre il campo type viene usato, come ci si aspetta, per capire lato server (quindi chi riceve la richiesta soap) che tipo di oggetto gli stiamo inviando inviando, se stringa, numero o altro.

Purtroppo pare che le librerie che si occupano di inviare le richieste soap da wavemaker al server facciano degli errori nell’interpretare i numeri decimali. Infatti se cercavo di inviare un numero tipo “10,00” che deve essere interpretato come DOUBLE lato server veniva interpretato come INTEGER e ovviamente il server soap restituisce un errore. E’ capitato anche che numeri venissero inviati come stringhe e per cui comparivano errori tipo cannot cast String to Double.

In pratica WaveMaker, ma presumo JavaScript non mette i numeri dopo la virgola se questi sono a 0, cioe’ se scrivo il numero “10,00”, che deve essere un double in Java, questo diventa “10” e riconosciuto come intero (Long a dire il vero), da qui l’errore cannot cast Long to Double.
Il problema e’ che il parser XML ci aggiunge il tipo che lui ha deciso, inviando nella richiesta soap il tipo sbagliato o che a noi non serve.

SOLUZIONE:

dopo parecchio tempo speso a cercare di capire da dove provenissero gli errori, sono magicamente arrivato alla conclusione che, a scanso di formati particolari basati sulla lingua, quindi sulla localizzazione che io non modificato, e’ quella di defualt, e’ sufficiente utilizzare il metodo variabile.toFixed(n) sulla variabile numerica che stiamo usando. Al posto di n ci metto il numero di decimali che devono essere sempre presenti, solo cosi’ il parser XML che invia la richiesta soap al web server inferisce il tipo di dato in modo corretto e cioe’ Double e non Long (o Int).

Leave a Reply