We hebben een werknemer met de achternaam Null. Onze toepassing voor het opzoeken van werknemers wordt afgebroken wanneer die achternaam als zoekterm wordt gebruikt (wat nu heel vaak gebeurt). De fout die we krijgen (bedankt Fiddler!) is:
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>coldfusion.xml.rpc.CFCInvocationException: [coldfusion.runtime.MissingArgumentException : The SEARCHSTRING parameter to the getFacultyNames function is required but was not passed in.]</faultstring>
Schattig, huh?
Het parametertype is string
.
Ik gebruik:
Merk op dat de fout niet optreden bij het aanroepen van de webservice als een object van een ColdFusion pagina.
Op de xkcd noot, de Bobby Tables website heeft goed advies voor het vermijden van de onjuiste interpretatie van gebruikersgegevens (in dit geval, de string "Null") in SQL queries in verschillende talen, waaronder ColdFusion.
Uit de vraag blijkt niet duidelijk dat dit de bron van het probleem is, en gezien de oplossing die in een commentaar op het eerste antwoord werd vermeld (de parameters in een structuur inbedden) lijkt het waarschijnlijk dat het om iets anders ging.
Het probleem zou kunnen zijn in Flex's SOAP-encoder. Probeer de uitbreiding van de SOAP-encoder in uw Flex applicatie en debug het programma om te zien hoe de null-waarde wordt behandeld.
Mijn gok is, het's doorgegeven als NaN (Niet een nummer). Dit zal knoeien het SOAP-bericht unmarshalling proces ergens (met name in de JBoss 5 server ...). Ik herinner me dat ik de SOAP encoder heb uitgebreid en een expliciete controle heb uitgevoerd op hoe NaN wordt behandeld.
Als hack zou je kunnen overwegen om een speciale afhandeling aan de client kant te hebben, die 'Null' string converteert naar iets dat nooit zal voorkomen, bijvoorbeeld XXNULLXX en terug converteert op de server.
Het is niet mooi, maar het kan het probleem oplossen voor zo'n grensgeval.