"Переменная 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#" />