Soyadı Null olan bir çalışanımız var. Çalışan arama uygulamamız, bu soyadı arama terimi olarak kullanıldığında (şu anda oldukça sık oluyor) öldürülüyor. Alınan hata (teşekkürler Fiddler!) şudur:
<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>
Şirin, değil mi?
Parametre türü string
dir.
Ben kullanıyorum:
Bir ColdFusion sayfasından webservice bir nesne olarak çağrıldığında hatanın oluşmadığını unutmayın.
xkcd notunda]1, Bobby Tables web sitesi, ColdFusion dahil olmak üzere çeşitli dillerdeki SQL sorgularında kullanıcı verilerinin (bu durumda "Null" dizesi) yanlış yorumlanmasını önlemek için iyi tavsiyelerde bulunmaktadır.
Sorunun kaynağının bu olduğu sorudan anlaşılmıyor ve ilk cevaba yapılan bir yorumda belirtilen çözüm (parametreleri bir yapıya gömmek) göz önüne alındığında, başka bir şey olması muhtemel görünüyor.
Sorun Flex'in SOAP kodlayıcısında olabilir. Flex uygulamanızdaki SOAP kodlayıcıyı genişletmeyi deneyin ve null değerinin nasıl işlendiğini görmek için programda hata ayıklayın.
Benim tahminim, NaN (Sayı Değil) olarak geçtiği yönünde. Bu, bazen SOAP mesajının ayrıştırma işlemini bozacaktır (özellikle JBoss 5 sunucusunda...). SOAP kodlayıcısını genişlettiğimi ve NaN'ın nasıl işlendiğine dair açık bir kontrol gerçekleştirdiğimi hatırlıyorum.
Bir hack olarak, istemci tarafında özel bir işlem yapmayı, 'Null' dizesini asla gerçekleşmeyecek bir şeye, örneğin XXNULLXX'e dönüştürmeyi ve sunucuda geri dönüştürmeyi düşünebilirsiniz.
Hoş değil, ancak böyle bir sınır durumu için sorunu çözebilir.