Coldfusion cfparam';d变量是否未定义?

Coldfusion cfparam';d变量是否未定义?,coldfusion,Coldfusion,许多源通常通过调用单个资源,但有些源使用 理想情况下,代码查找变量previous\u state。如果传递了一些变体,则资源将尝试使用它们 我收到了这个错误: 变量PREVIOUS_状态未定义 行记录指向这段代码中的 <cfparam name= "previous_state" default= "" /> <cfif isSimpleValue( previous_state ) and len( pr

许多源通常通过
调用单个资源,但有些源使用

理想情况下,代码查找变量
previous\u state
。如果传递了一些变体,则资源将尝试使用它们

我收到了这个错误:

变量PREVIOUS_状态未定义

行记录指向这段代码中的

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

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

</cfif>

我现在认为,
cfparam
正在尝试使用一个在代码执行时已不存在的范围。

请确保正确定义变量的范围,并且上面的示例中有一个输入错误。在ACF9.0.1和Railo3.3.1.000上运行此代码没有问题

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

<cfdump var="#previous_state#">

要使前一个_状态未定义,它需要为null。你需要像这样做

<cfif isNull(previous_state)>true</cfif>
true
要证明这一点,请尝试以下方法

<cfset previous_state = "" />
<!--- Change to set previous_state --->
<cfset previous_state = javacast( "null", previous_state ) />

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

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

由于代码在CFTHREAD标记中,所以您应该将
上一个状态作为CFTHREAD属性传递,例如:

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

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

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

    </CFTHREAD>


我在CF8上使用该示例获得了成功的执行。上面的代码是在CTHREAD标记中定义的吗?是的。这看起来像是线程中的范围问题。肯定是范围问题。我对cfthread的处理还不够,但我认为previous_状态应该在attributes范围内(attribute.previous_state)。为什么previous_状态首先被定义为cfthread中的参数?您是否希望将上一个_状态作为URL/FORM参数传递到执行页面?如果是这样的话,那么在CFTHREAD之外定义它,并将其作为一个附加属性进行传递。我期待前面的_状态,但不是所有调用都传递它。例如,最后一个代码段将传递previousState。我之所以选择previousState,是因为如果传递previousState,我可以设置它的值。我开始认为这是一个线程范围问题。正在跟踪完整的执行路径。。。
<cfparam name="previous_state" default="" />

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

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

    </CFTHREAD>