"Переменная TotalCorpAudits не определена" при вызове функции из cfc

Я получаю неопределенную переменную ошибку при попытке вызвать функцию из 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"> 

3 ответа

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 в качестве справочного материала.

Имя компонента происходит от переменных? Является ли IandI переменной? Если это не так, вам не нужно оборачивать это в знаки #. И это то, что я думаю, является причиной проблемы.

В последнее время я сталкивался с этим несколько раз; это определенно похоже на ошибку в движке ColdFusion. Похоже, что компилятор пытается вычислить переменную внутри CFC, а не на вызывающей странице. Я смог обойти это, заранее определив свою структуру аргументов, а затем просто включив структуру в invoke().

      <cfset argStruct = {argName1=val1,argName2=val2,argName3="hardcodedValue"}>
<cfinvoke component="cfcPath" method="methodName" argumentCollection="#argStruct#" />
Другие вопросы по тегам