1

当我尝试从 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#" 处出现错误

氟氯化碳代码:

<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"> 
4

3 回答 3

1

CFINVOKE 的工作方式如下:

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

请注意几件事:在标签<cfinvokeargument>下方。<cfinvoke>此外,我只使用了这两个参数,因为它们在 CFC 中是必需的,但如果需要,您可以添加更多参数。使用https://wikidocs.adobe.com/wiki/display/coldfusionen/cfinvoke作为参考。

于 2014-03-26T15:41:38.300 回答
0

组件的名称是否来自变量?IandI 是变量吗?如果不是,则不必将其包装在 # 符号中。这就是我认为造成问题的原因。

于 2014-03-26T12:32:24.237 回答
0

我最近遇到过几次这种情况;这绝对看起来像是 ColdFusion 引擎中的一个错误。似乎编译器正在尝试从 CFC 内部评估变量,而不是调用页面。我已经能够通过预先定义我的参数结构来解决它,然后简单地将结构包含在调用()中。

<cfset argStruct = {argName1=val1,argName2=val2,argName3="hardcodedValue"}>
<cfinvoke component="cfcPath" method="methodName" argumentCollection="#argStruct#" />
于 2021-02-04T17:04:47.957 回答