ColdFusion:isdefined,但抛出未定义的错误

时间:2011-12-21 18:35:11

标签: coldfusion coldfusion-9

<cfif ISDEFINED("CALLER.VARIABLES.STRFUNCNAME")>
  <cfparam name="strFuncName" default="#EVALUATE(CALLER.VARIABLES.STRFUNCNAME)#" />
<cfelse>
  <cfparam name="strFuncName" default="" />
</cfif>

此代码位于我们的一个CustomTag中,并在EVALUATE行上抛出错误。我不确定那是怎么回事。

我可以从调用页面执行此操作,以查看变量是否已定义:

<cfset VARIABLES.strFuncName = "strFuncName#intModule#"> <!--- intModule = 1188 --->
#VARIABLES.strFuncName#: #EVALUATE(VARIABLES.strFuncName)# <!--- strFuncName1188: Main --->
<CF_CUSTOMTAG> <!--- Tell me Variable strFuncName1188 is undefined. --->

2 个答案:

答案 0 :(得分:3)

将您的代码更改为:

<cfparam name="strFuncName" default="#EVALUATE('CALLER.VARIABLES.STRFUNCNAME')#" />

答案 1 :(得分:0)

终于想通了......

CALLER.VARIABLES.STRFUNCNAME只返回“strFuncName ####”。因此,对此进行评估是在当前处理范围内查找变量“strFuncName ####”,而不是在CALLER上。

我将cfparam更改为以下内容并开始工作:

<cfparam name="strFuncName" default="#EVALUATE("CALLER." & CALLER.VARIABLES.STRFUNCNAME)#" />