@ doc_180 có khái niệm đúng, ngoại trừ anh ta tập trung vào các con số, trong khi người đăng ban đầu có vấn đề với chuỗi.
Giải pháp là thay đổi mx.rpc.xml.XMLEncoder
tập tin. Đây là dòng 121:
if (content != null)
result += content;
(Tôi đã xem xét Flex 4.5.1 SDK; số dòng có thể khác nhau trong các phiên bản khác.)
Về cơ bản, việc xác thực không thành công vì 'nội dung là null' và do đó, đối số của bạn không được thêm vào Gói SOAP đi; do đó gây ra lỗi tham số bị thiếu.
Bạn phải mở rộng lớp này để loại bỏ xác nhận. Sau đó, có một quả cầu tuyết lớn lên chuỗi, sửa đổi SOAPEncoder để sử dụng XMLEncoder đã sửa đổi của bạn và sau đó sửa đổi Hoạt động để sử dụng SOAPEncoder đã sửa đổi của bạn và sau đó sử dụng WebService thay thế để sử dụng lớp Hoạt động thay thế của bạn.
Tôi đã dành một vài giờ cho nó, nhưng tôi cần phải tiếp tục. Nó có thể sẽ mất một hoặc hai ngày.
Bạn có thể chỉ cần sửa dòng XMLEncoder và thực hiện một số bản vá khỉ để sử dụng lớp của riêng bạn.
Tôi cũng sẽ thêm rằng nếu bạn chuyển sang sử dụng RemoteObject / AMF với ColdFusion, null sẽ được thông qua mà không gặp vấn đề gì.
16/11/2013 cập nhật :
Tôi có thêm một bổ sung gần đây vào nhận xét cuối cùng của tôi về RemoteObject / AMF. Nếu bạn đang sử dụng ColdFusion 10; sau đó các thuộc tính có giá trị null trên một đối tượng được xóa khỏi đối tượng phía máy chủ. Vì vậy, bạn phải kiểm tra sự tồn tại của các thuộc tính trước khi truy cập nó hoặc bạn sẽ gặp lỗi thời gian chạy.
Kiểm tra như thế này:
<cfif (structKeyExists(arguments.myObject,'propertyName')>
<!--- no property code --->
<cfelse>
<!--- handle property normally --->
</cfif>
Đây là một sự thay đổi trong hành vi từ ColdFusion 9; trong đó các thuộc tính null sẽ biến thành các chuỗi rỗng.
Chỉnh sửa 12/6/2013
Vì có một câu hỏi về cách xử lý null, đây là một ứng dụng mẫu nhanh để chứng minh một chuỗi "null" sẽ liên quan đến từ null dành riêng như thế nào.
<?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>
Đầu ra theo dõi là:
chuỗi null không bằng từ dành riêng null bằng cách sử dụng điều kiện! =
chuỗi null không bằng từ dành riêng null bằng cách sử dụng điều kiện ==
chuỗi null không bằng từ dành riêng null bằng điều kiện ===