SORU
16 Aralık 2010, PERŞEMBE


Nasıl doğru ActionScript 3 SOAP web servisine dize "Boş" (bir çalışanın'in uygun soyadı) geçtim mi?

Boş olan bir çalışanımız var. Çalışan arama uygulaması son ismi arama terimi olarak kullanıldıĞında öldürdü oldukça sık olur. Hata (teşekkürler Fiddler!) aldı :

  <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>

Sevimli, değil mi?

Parametre türü string.

Kullanıyorum:

  • WSDL (SABUN).
  • Flex 3.5
  • ActionScript 3
  • ColdFusion 8

Hata ColdFusion sayfasındaki bir nesne olarak Java eklentisi ararken oluşmaz unutmayın.

CEVAP
1 AĞUSTOS 2013, PERŞEMBE


Aşağı izleme

İlk başta bu null "null" zorla almak olduğu zorlama bir hata olduğunu düşündüm ve "null" == null bir test geçiyordu. Değil.Yakın, ama çok yanılmışım. Pardon, özür dilerim!

Beri fiddling on wonderfl.net mx.rpc.xml.* kod ile izleme yaptım. Satırında XMLEncoder (3.5 kaynağı), setValue XMLEncoding tüm bu 1795 aşağı kaynar

currentChild.appendChild(xmlSpecialCharsFilter(Object(value)));

temelde aynı olan:

currentChild.appendChild("null");

Bu kod, orijinal kemanımı göre, boş bir XML öğesi döndürür. Ama neden?

Neden

Hata raporu yorumcu Justin Mclean FLEX-33664 aşağıdakileri göre suçlu (bunu doğrulamak ** 20 benim son iki testleri bakınız):

var thisIsNotNull:XML = <root>null</root>;
if(thisIsNotNull == null){
    // always branches here, as (thisIsNotNull == null) strangely returns true
    // despite the fact that thisIsNotNull is a valid instance of type XML
}

currentChild.appendChild "null" dize geçirildiğinde ilk metin* *17, null değişmez karşı unsur bu testler ile XML kök öğesi dönüştürür. Bu zayıf bir eşitlik testi, ya da XML içeren null zorla boş türü veya null türü zorlanmış bir kök xml öğesi içeren bir dize "null", ve Testi geçer nerede muhtemelen gerekir başarısız. Bir düzeltme her zaman "nullness." XML " (ya da bir şey, gerçekten) kontrol ederken strict equality testleri kullanmak olabilir

Çözüm

Aklıma gelen tek mantıklı çözüm yöntemine giden her lanet sürümünde bu hata sabitleme kısa, "boş" ve . alanlar için test etmektir ^strong>CDATA values olarak kaçmalarına.

CDATA değerler yoksa kodlama/kod çözme sorunlara neden olabilecek bütün bir metin değeri değişmek için en uygun yoldur.Hex kodlama, örneğin, tek tek karakterler içindir. CDATA değerleri bir elementin tüm metin kaçan olduğunda tercih edilir. Bunun en büyük nedeni insan okunabilirlik sağlar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ChannelRichard

    ChannelRicha

    7 Kasım 2008
  • iMasterful

    iMasterful

    11 EYLÜL 2009
  • Matt Harding

    Matt Harding

    23 Mayıs 2006