@ doc_180, sayılara odaklanması dışında doğru konsepte sahipken, orijinal posterin dizelerle ilgili sorunları vardı.
Çözüm mx.rpc.xml.XMLEncoder
dosyayı değiştirmektir . Bu satır 121:
if (content != null)
result += content;
(Flex 4.5.1 SDK'ya baktım; satır numaraları diğer sürümlerde farklı olabilir.)
Temel olarak, 'içerik boş' olduğundan doğrulama başarısız olur ve bu nedenle argümanınız giden SOAP Paketine eklenmez; böylece eksik parametre hatasına neden olur.
Doğrulamayı kaldırmak için bu sınıfı genişletmeniz gerekir. Daha sonra, zincirin üstünde büyük bir kartopu var, değiştirilmiş XMLEncoder'ınızı kullanması için SOAPEncoder'ı değiştiriyor ve daha sonra değiştirilmiş SOAPEncoder'ınızı kullanmak için Operasyonu değiştiriyor ve daha sonra alternatif Operation sınıfınızı kullanmak için WebService'i nemlendiriyor.
Üzerinde birkaç saat geçirdim, ama devam etmem gerekiyor. Muhtemelen bir iki gün sürecek.
XMLEncoder hattını düzeltebilir ve kendi sınıfınızı kullanmak için bazı maymun yamaları yapabilirsiniz .
ColdFusion ile RemoteObject / AMF kullanmaya geçerseniz, null'un sorunsuz iletildiğini de ekleyeceğim.
16.11.2013 güncellemesi :
RemoteObject / AMF ile ilgili son yorumuma bir yenisi daha ekledim. ColdFusion 10 kullanıyorsanız; daha sonra bir nesne üzerinde null değeri olan özellikler sunucu tarafı nesnesinden kaldırılır. Bu nedenle, erişmeden önce özelliklerin varlığını kontrol etmeniz gerekir veya bir çalışma zamanı hatası alırsınız.
Şunun gibi kontrol et:
<cfif (structKeyExists(arguments.myObject,'propertyName')>
<!--- no property code --->
<cfelse>
<!--- handle property normally --->
</cfif>
Bu, ColdFusion 9'daki davranış değişikliğidir; burada null özellikler boş dizgilere dönüşür.
Düzenle 12/6/2013
Null değerlerinin nasıl işlendiği hakkında bir soru olduğundan, burada "null" dizesinin ayrılmış null sözcüğü ile nasıl ilişkilendirileceğini göstermek için hızlı bir örnek uygulama verilmiştir.
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" initialize="application1_initializeHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function application1_initializeHandler(event:FlexEvent):void
{
var s :String = "null";
if(s != null){
trace('null string is not equal to null reserved word using the != condition');
} else {
trace('null string is equal to null reserved word using the != condition');
}
if(s == null){
trace('null string is equal to null reserved word using the == condition');
} else {
trace('null string is not equal to null reserved word using the == condition');
}
if(s === null){
trace('null string is equal to null reserved word using the === condition');
} else {
trace('null string is not equal to null reserved word using the === condition');
}
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
</s:Application>
İz çıktısı:
null dizesi,! = koşulunu kullanarak null ayrılmış sözcüğüne eşit değil
null dizesi, == koşulu kullanılarak null ayrılmış sözcüğüne eşit değil
null dizesi, === koşulunu kullanarak null ayrılmış sözcüğüne eşit değil