アプリケーションから送信するすべての電子メールを処理する CFC ファイルがあります (Coldfusion8 を使用)。
私は CFINVOKE を使用して、この CFC 内のそれぞれの関数を呼び出し、次のようにすべてのユーザー データを含む構造体を渡しました。
<cfscript>
var User.data = {};
User.data.name = "John Doe";
User.data.email = "john@doe.com";
...
</cfscript>
// call mailer
<cfinvoke component="mailer_user" method="say_hi">
<cfinvokeargument name="userData" value="#User.data#">
</cfinvoke>
そして私のmailer.cfcの中に
<cffunction name="say_hi" access="public" output="false">
<cfargument name="userData" type="struct" required="true" />
....
何らかの理由でこれは失敗し、フィールドをcfargumentとして個別に渡す場合にのみ機能させることができます。これは、大量のデータを渡すため、苦痛です。
質問: argumentCollectionを使用してこれを機能させるにはどうすればよいですか。
私がこのようにCFINVOKEしたとしても:
<cfinvoke component="mailer_user" argumentcollection="#User.data#" method="say_hi"></cfinvoke>
それはまだ何もしません。cfinvoke の直前と直後、および出入りする「say_hi」関数内で出力フラグを設定しています。CFINVOKEの前にフラグを取得しているだけです。
補足: これはすべて AJAX を介して行われ、CFC のどこかにエラーがある場合にのみ success="false" が返されます。システム上でリモートで作業するだけなので、CFADMIN で AJAX デバッグを設定できません