Tenemos un empleado cuyo apellido es Null. Nuestra aplicación de búsqueda de empleados muere cuando se utiliza ese apellido como término de búsqueda (lo que ocurre con bastante frecuencia ahora). El error recibido (¡gracias Fiddler!) es:
idioma: lang-none -->
<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>
Lindo, ¿no?
El tipo de parámetro es cadena
.
Estoy usando:
Tenga en cuenta que el error no se produce cuando se llama al webservice como un objeto desde una página de ColdFusion.
En la nota de xkcd, el sitio web de Bobby Tables tiene buenos consejos para evitar la interpretación incorrecta de los datos del usuario (en este caso, la cadena "Null") en las consultas SQL en varios lenguajes, incluyendo ColdFusion.
No está claro en la pregunta que éste sea el origen del problema, y dada la solución apuntada en un comentario a la primera respuesta (incrustar los parámetros en una estructura) parece probable que fuera otra cosa.
El problema podría estar en el codificador SOAP de Flex. Intente ampliar el codificador SOAP en su aplicación Flex y depure el programa para ver cómo se gestiona el valor nulo.
Supongo que se pasa como NaN (Not a Number). Esto estropeará alguna vez el proceso de desmarcación de mensajes SOAP (sobre todo en el servidor JBoss 5). Recuerdo haber extendido el codificador SOAP y realizar una comprobación explícita de cómo se maneja NaN.
Como un hack, usted podría considerar tener un manejo especial en el lado del cliente, convirtiendo 'Null' cadena a algo que nunca se producirá, por ejemplo, XXNULLXX y convertir de nuevo en el servidor.
No es bonito, pero puede resolver el problema para este caso límite.