Coldfusion 如何动态调用CFC函数

Coldfusion 如何动态调用CFC函数,coldfusion,cfc,Coldfusion,Cfc,我使用CFBuilder“createCFC”插件为一个表创建一个服务,这样我就可以使用OOD了。现在我正在努力使用动态生成的“更新”函数 我打电话给cfc,通过传递ID来获取帐户结构 <cfinvoke component="cfc.Account.accountService" method="getAccount" returnvariable="Account" AccountID="#session.auth.AccountID#"> 我可以使用一段手动代码调用upd

我使用CFBuilder“createCFC”插件为一个表创建一个服务,这样我就可以使用OOD了。现在我正在努力使用动态生成的“更新”函数

我打电话给cfc,通过传递ID来获取帐户结构

<cfinvoke component="cfc.Account.accountService" method="getAccount" returnvariable="Account" AccountID="#session.auth.AccountID#">

我可以使用一段手动代码调用update函数

<cfset Account.setAccountFirstname('#form.AccountFirstname#')>

这很好,但我希望根据表单中的数据动态更新结构。因此,我在表单中循环字段并生成以下内容

<!--- Dynanic call of submitted fields --->
<cfloop list="#form.FieldNames#" index="i">
    <cfset Account.set[i]('#Evaluate('#i#')#')>
    </cfloop>


现在当然不行了!有什么好办法吗?或者更好的处理方法?

您试图用invoke执行的操作不起作用,这是因为您将属性作为独立组件参数(即类路径)传递,而您需要在对象实例中传递

编辑以添加:

<cfset account = new Account()/>
<cfset data = {
  accountId = session.auth.AccountID
}/>
<cfset fieldNames = listToArray(form.fieldNames)/>
<cfif ! arrayIsEmpty(fieldNames)>
  <cfloop array="#fieldNames#" index="fieldName">
    <cfinvoke 
      component="#account#"
      method="set#FieldName#" 
      returnVariable="methodResult" 
      argumentCollection="#data#"
    />
  </cfloop>
</cfif>


'#评估(#i#')#
更改为
表格[i]
只需重新阅读您的实际问题-请参阅@PeterBoughton链接实际上是我的问题。在这种情况下,我不确定它是否会有帮助,因为由于缺少对它的
cfscript
支持,我特别无法使用
invoke
。另外,我还在对象实例中动态调用方法。看看我下面的答案。我可能想使用另一个链接-有一个只是一个简单的“如何使用cfinvoke”问题,这也是这个问题似乎是什么?可以将第5行和第7行简化为
事实上,你根本不需要if条件-如果为空,循环不会循环。这似乎是一个简单的方法,谢谢我实际上已经重新编写了它,但我将用旧代码测试它。。