将VARIABLES范围与动态变量名称一起使用时,我收到以下错误:
Element wlc_period is undefined in a Java object of type class coldfusion.runtime.VariableScope.
当我尝试运行此代码时:
<cfparam name="wlc_period#y#" default="36">
<cfscript>
wlc_period = VARIABLES['wlc_period#y#'];
</cfscript>
但是如果我使用evaluate()
,它就可以了:
<cfscript>
wlc_period = evaluate('wlc_period#y#');
</cfscript>
在执行时, y 变量是一个空字符串,但代码在循环中的其他位置使用,因此有时可以使用1到5的整数填充。
代码应该尝试访问 wlc_period ,如果我只做一个简单的转储就可以了:
<cfparam name="wlc_period#y#" default="36">
<cfscript>
writedump(wlc_period);
</cfscript>
我宁愿使用VARIABLES范围而不是evaulate(),我在这里遗漏了什么吗?
答案 0 :(得分:1)
以下代码对我有效。
<cfset y = "">
<cfparam name="wlc_period#y#" default="36">
<cfscript>
wlc_period = VARIABLES['wlc_period#y#'];
</cfscript>
<cfdump var="#wlc_period#">
如果你只有.cfm文件,那对你有用吗?
我怀疑您遇到的问题与您发布的代码无关。
答案 1 :(得分:0)
我认为你误解了VARIABLES
范围是什么。或者可能是真正的范围变量。
范围变量是存储在特定集合中的值。例如,FORM
范围存储从FORM帖子传递的所有值。 URL
范围存储在URL的查询字符串中传递的所有值。
VARIABLES范围用于ColdFusion组件(CFC)。它用于保持某些CFC属性可重用,但是私有。 VARIABLES范围不仅仅是存储所有变量的对象。
查看代码,wlc_period#y
只是您正在设置的本地变量。我建议将值存储在Local范围内。我喜欢使用“LOCAL”作为局部变量:
<cfparam name="LOCAL.wlc_period#y#" default="36">
<cfscript>
wlc_period = LOCAL['wlc_period#y#'];
</cfscript>
您可能也应该y
范围。
如果像这样适当地调整变量范围,可以避免遇到多个范围具有相同变量的问题。