gpt4 book ai didi

coldfusion - cfparam 的变量怎么可能是未定义的?

转载 作者:行者123 更新时间:2023-12-02 00:29:01 24 4
gpt4 key购买 nike

许多来源调用单个资源,通常通过 <cfthread ..> , 但有些使用 <cfinclude ..> .

理想情况下,代码查找变量 previous_state .如果传递了某些变体,则资源将尝试使用它们。

我收到这个错误:

Variable PREVIOUS_STATE is undefined.

线路记录指向<cfif ..>在这段代码中。

<cfparam    name=       "previous_state"
default= "" />

<cfif isSimpleValue( previous_state )
and len( previous_state ) eq 0>
<cfset previous_state= previousState />

</cfif>

我的问题是 previous_state 怎么可能是未定义的?

我可以在应用程序中复制它,但它是一个使用线程的相当复杂的代码链。也许引用被垃圾收集器吃掉了?

我无法在简单的代码段中复制它。我尝试使用 returnType= "void" 将变量设置为函数的返回值,但是<cfparam ..>似乎将其重置为空字符串。

这是完整的代码上下文。我删除了不相关的变量等。

// Page
oComponent.foo();

// Component.foo()
<cfset var local= {
previous_state= QueryNew( "foo" , "varchar" )

} />

<cfthread name= "foo_#createUUID()#"
previousState= "#local.previous_state#">
<!--- Module does unrelated things... --->
<cfmodule template= "some_module.cfm">
<cfoutput>
// unrelated things

<cfparam name= "previous_state"
default= "" />

<!--- Next line is throwing error. --->
<cfif isSimpleValue( previous_state )
and len( previous_state ) eq 0>
<cfset previous_state= previousState />

</cfif>

</cfoutput>

</cfmodule>

</cfthread>

我现在在想cfparam正在尝试使用在此代码执行时不再存在的范围。

最佳答案

由于代码在 CFTHREAD 标记内,我认为您应该将 previous_state 作为 CFTHREAD 属性传递,例如:

<cfparam name="previous_state" default="" />

<CFTHREAD previous_state = previous_state
previousState= "#local.previous_state#">

<cfif isSimpleValue( ATTRIBUTES.previous_state ) ........

</CFTHREAD>

引用 CF 文档:

“Attributes 作用域包含传递给该作用域的属性,并且仅在线程内可用且仅在线程的生命周期内可用。”

关于coldfusion - cfparam 的变量怎么可能是未定义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7740580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com