Coldfusion &引用;变量TotalCorpAudits未定义;从cfc调用函数时
当我试图从cfc调用函数时,我遇到变量未定义错误。 最好的部分是它已经在上面定义了。 “IandI”是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
<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#" />