@ doc_180は、数字に焦点を当てていることを除いて、正しい概念を持っていましたが、元のポスターには文字列に関する問題がありました。
解決策は、mx.rpc.xml.XMLEncoder
ファイルを変更することです。これは121行目です。
if (content != null)
result += content;
(Flex 4.5.1 SDKを確認しました。他のバージョンでは行番号が異なる場合があります。)
基本的に、 'content is null'で検証が失敗するため、引数が発信SOAPパケットに追加されません。したがって、欠落しているパラメーターエラーが発生します。
検証を削除するには、このクラスを拡張する必要があります。次に、チェーンに大きな雪だるまがあります。SOAPEncoderを変更して、変更したXMLEncoderを使用します。次に、Operationを変更して、変更したSOAPEncoderを使用し、WebServiceを変更して、代替のOperationクラスを使用します。
数時間を費やしましたが、次に進む必要があります。おそらく1〜2日かかります。
XMLEncoderの行を修正して、独自のクラスを使用するためにサルのパッチを適用できる場合があります。
また、ColdFusionでRemoteObject / AMFを使用するように切り替えた場合、問題なくnullが渡されることも追加します。
2013年11月16日更新:
RemoteObject / AMFに関する私の最後のコメントに、もう1つ最近追加しました。ColdFusion 10を使用している場合。次に、オブジェクトにnull値を持つプロパティがサーバー側オブジェクトから削除されます。したがって、アクセスする前にプロパティの存在を確認する必要があります。そうしないと、ランタイムエラーが発生します。
このように確認してください:
<cfif (structKeyExists(arguments.myObject,'propertyName')>
<!--- no property code --->
<cfelse>
<!--- handle property normally --->
</cfif>
これは、ColdFusion 9からの動作の変更です。nullプロパティは空の文字列になります。
2013年12月6日を編集
nullがどのように扱われるかについての質問があったので、文字列「null」が予約語nullにどのように関係するかを示す簡単なサンプルアプリケーションを次に示します。
<?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>
トレース出力は次のとおりです。
!=条件を使用したnull文字列はnull予約語と等しくありません
==条件を使用したnull文字列はnull予約語と等しくありません
===条件を使用したnull文字列はnull予約語と等しくありません