Coldfusion &引用;变量TotalCorpAudits未定义;从cfc调用函数时

Coldfusion &引用;变量TotalCorpAudits未定义;从cfc调用函数时,coldfusion,cfc,cfinvoke,Coldfusion,Cfc,Cfinvoke,当我试图从cfc调用函数时,我遇到变量未定义错误。 最好的部分是它已经在上面定义了。 “IandI”是cfc的名称 代码段: <cfparam name="TotalCorpAudits" default="0"> <cfset TotalAudits = TotalSiteAudits + TotalCorpAudits> <cfinvoke component="#IandI#" method="calcRate" Cases="#TotalCor

当我试图从cfc调用函数时,我遇到变量未定义错误。 最好的部分是它已经在上面定义了。 “IandI”是cfc的名称

代码段:

<cfparam name="TotalCorpAudits" default="0">
<cfset TotalAudits = TotalSiteAudits + TotalCorpAudits>
<cfinvoke   component="#IandI#"
  method="calcRate" 
  Cases="#TotalCorpAudits#"
  Hours="#TotalAudits#"
  iiFactor="1"
  convertToPercent="true"
  NumberFormatOn="true"
  returnOnZeroHours="0"
  returnOnNonNumericData="0"
  returnvariable="TotalCorpRatioAudits"
>

正在获取错误。。。Cases=“#TotalCorpAudits#”

CFC代码:

<cffunction name="calcRate" access="public" returntype="string"
  displayname="calcs Rate" hint="" description="">              
  <cfargument name="Hours" required="Yes" type="string">
  <cfargument name="Cases" required="Yes" type="string">
  <cfargument name="IIFactor" required="No" type="numeric" default="200000">
  <cfargument name="FormatMask" required="No" type="string" default="999.99">
  <cfargument name="NumberFormatOn" required="No" type="boolean" default="false">
  <cfargument name="returnOnZeroHours" required="No" type="string" default="0">
  <cfargument name="returnOnNonNumericData" required="No" type="string" default="N/A">
  <cfargument name="returnOnZeroCasesWithHours" required="No" type="string" default="0">
  <cfargument name="convertToPercent" required="No" type="boolean" default="false"> 


是来自变量的组件名称吗?IandI是一个变量吗?如果不是,你就不必用标志来包装它。我认为这就是造成问题的原因。

CFINVOKE的工作原理如下:

<cfinvoke component="[CFC_FileName]" method="calcRate" returnvariable="TotalCorpRatioAudits">
    <cfinvokeargument name="Hours" value="[whateverValueYouWant]">
    <cfinvokeargument name="Cases" value="[whateverValueYouWant]">
</cfinvoke>


注意两件事:
位于
标记下面。此外,我只使用了这两个参数,因为它们在CFC中是必需的,但如果需要,您可以添加更多。用作参考。

我最近几次碰到这个问题;这显然像是ColdFusion引擎中的一个bug。似乎编译器正在尝试从CFC中计算变量,而不是从调用页。 我可以通过预先定义参数的结构来解决这个问题,然后简单地将结构包含在invoke()中



请参见,我已经使用cfparam定义了“TotalCorpAudits”。但还是在第一线出错。。。。。。Cases=“#TotalCorpAudits#”能否包含堆栈跟踪?如果它通过了
cfset
您不应该在出现错误的地方出现错误,那么问题更可能是组件属性中的变量。硬编码一个值,看看会发生什么。
<cfset argStruct = {argName1=val1,argName2=val2,argName3="hardcodedValue"}>
<cfinvoke component="cfcPath" method="methodName" argumentCollection="#argStruct#" />