如何动态调用CFC函数

时间:2012-10-27 12:34:45

标签: coldfusion cfc

我使用CFBuilder“创建CFC”插件来为表创建服务,所以我可以玩OOD。现在我正在努力使用以动态方式生成的“更新”功能。

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

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

我可以使用手动代码来调用更新函数。

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

这很好,但我想根据表单中的数据动态更新结构。所以我想循环表单中的字段并生成以下

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

现在当然不起作用!任何想法会起作用吗?或者更好的方法来处理它?<​​/ p>

1 个答案:

答案 0 :(得分:3)

你试图用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>