我正在尝试创建一个 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: line 301
该错误报告在目标组件上,因此似乎正在调用该函数,并且传递了参数,但该类型并未被保留/识别为字符串。
谁能建议我做错了什么或如何保留参数类型?