別のコンポーネントをプロキシする cf コンポーネントを作成しようとしています。現時点では、コードは次のようになっています: (例のために省略しています):
public MyFuseboxProxy function init( Required any myFb ){
variables.myFusebox = arguments.myFb;
return this;
}
this.do = variables.proxy;
private any function proxy(){
var local.functionName = getFunctionCalledName();
var local.function = variables.myFusebox[local.functionName];
var local.returnVal = local.function( arguments );
...
}
ご覧のとおり、非常に簡単です。初期化時にターゲット オブジェクトを渡し、プロキシ メソッドを使用して関数呼び出しをインターセプトします。私はcfscriptを使用していますが、cfinvokeを使用したくないため、このアプローチを使用しています。
次に、次のようにプロキシを呼び出します。
var local.proxy = new ab.MyFuseboxProxy( myFusebox );
var local.dump = local.proxy.do ( action='display.body', contentvariable="body" );
ただし、上記のコードを実行すると、次のエラーが発生します。
do 関数に渡された ACTION 引数が文字列型ではありません。
この引数の型としてコンポーネント名を指定した場合、コンポーネントの定義ファイルが見つからないか、アクセスできない可能性があります。
C:/ColdFusion10/cfusion/wwwroot/fusebox5/myFusebox.cfc: 行 301 でエラーが発生しました
エラーはターゲットコンポーネントで報告されているため、関数が呼び出され、引数が渡されたように見えますが、型は保存されておらず、文字列として認識されていません。
私が間違っていることや、引数の型を保持する方法を教えてもらえますか?