@ doc_180 memiliki konsep yang benar, kecuali ia fokus pada angka, sedangkan poster aslinya memiliki masalah dengan string.
Solusinya adalah mengubah mx.rpc.xml.XMLEncoder
file. Ini adalah baris 121:
if (content != null)
result += content;
(Saya melihat Flex 4.5.1 SDK; nomor baris mungkin berbeda di versi lain.)
Pada dasarnya, validasi gagal karena 'konten adalah nol' dan karenanya argumen Anda tidak ditambahkan ke Paket SOAP keluar; sehingga menyebabkan kesalahan parameter yang hilang.
Anda harus memperluas kelas ini untuk menghapus validasi. Kemudian ada bola salju besar di rantai, memodifikasi SOAPEncoder untuk menggunakan XMLEncoder Anda yang dimodifikasi, dan kemudian memodifikasi Operasi untuk menggunakan SOAPEncoder Anda yang dimodifikasi, dan kemudian membatalkan WebService untuk menggunakan kelas Operasi alternatif Anda.
Saya menghabiskan beberapa jam untuk itu, tetapi saya harus pindah. Mungkin butuh satu atau dua hari.
Anda mungkin dapat memperbaiki baris XMLEncoder dan melakukan patch monyet untuk menggunakan kelas Anda sendiri.
Saya juga akan menambahkan bahwa jika Anda beralih menggunakan RemoteObject / AMF dengan ColdFusion, null dilewatkan tanpa masalah.
Pembaruan 11/16/2013 :
Saya memiliki satu tambahan lagi untuk komentar terakhir saya tentang RemoteObject / AMF. Jika Anda menggunakan ColdFusion 10; kemudian properti dengan nilai nol pada suatu objek dihapus dari objek sisi server. Jadi, Anda harus memeriksa keberadaan properti sebelum mengaksesnya atau Anda akan mendapatkan kesalahan runtime.
Periksa seperti ini:
<cfif (structKeyExists(arguments.myObject,'propertyName')>
<!--- no property code --->
<cfelse>
<!--- handle property normally --->
</cfif>
Ini adalah perubahan perilaku dari ColdFusion 9; di mana properti nol akan berubah menjadi string kosong.
Edit 12/6/2013
Karena ada pertanyaan tentang bagaimana null diperlakukan, berikut adalah contoh aplikasi cepat untuk menunjukkan bagaimana string "null" akan berhubungan dengan kata null yang disediakan.
<?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>
Keluaran jejak adalah:
string nol tidak sama dengan kata null reserved menggunakan kondisi! =
string null tidak sama dengan kata null reserved menggunakan kondisi ==
string nol tidak sama dengan kata null reserved menggunakan kondisi ===