[解決済み] ActionScript 3 で SOAP ウェブサービスに "Null" (本当の苗字!) を渡す方法
質問
苗字がNullの社員がいます。その姓が検索語として使用された場合(現在ではかなりの頻度で使用されています)、当社の従業員検索アプリケーションは強制終了します。受け取ったエラー(Fiddlerに感謝!)は次のとおりです。
<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>
カワイイでしょう?
パラメータの型は
string
.
使っています。
エラーに注意してください ではありません。 は、ColdFusion ページからオブジェクトとしてウェブサービスを呼び出すと発生します。
解決方法は?
追跡調査
最初、私はこのバグが
null
が強制的に
"null"
のテストと
"null" == null
が通っていた。違うんです。
惜しかったけど、とてもとても残念です。申し訳ありません。
それ以来、私はたくさんの
wonderfl.netでいじり倒す
のコードをトレースし
mx.rpc.xml.*
. の1795行目で
XMLEncoder
(3.5版のソース)では
setValue
XMLEncoding はすべて次のようになります。
currentChild.appendChild(xmlSpecialCharsFilter(Object(value)));
というもので、本質的には同じです。
currentChild.appendChild("null");
このコードは、私のオリジナルのフィドルによれば、空のXML要素を返します。しかし、なぜでしょうか?
原因
バグレポートのコメント投稿者 Justin Mclean 氏によると FLEX-33664 の最後の2つのテストを参照してください)。 フィドル で検証しています)。
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"
というテキストを持つルート XML 要素に変換します.
null
そして、その要素をヌルリテラルに対してテストします。これは弱い等式テストなので、NULLを含むXMLがNULL型に強制されるか、NULL型が文字列"NULL"を含むルートXML要素に強制されて、テストは間違いなく失敗すべきところでパスされます。ひとつの修正として、常に
厳密な平等
XML (あるいは本当にどんなものでも) をチェックするときに "nullness." をテストすることができます。
解決方法
このバグをすべてのActionScriptのバージョンで修正することを除けば、私が思いつく唯一の合理的な回避策は、フィールドが"null"かどうかをテストすることである。 としてエスケープします。 CDATA値 .
CDATA値は、エンコーディング/デコーディングの問題を引き起こすテキスト値全体を変異させる最も適切な方法です。 例えば、Hexエンコーディングは、個々の文字に対応するものです。CDATA値は、要素のテキスト全体をエスケープする場合に好まれます。その最大の理由は、人間の可読性を維持するためです。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン