0

只是有点无能为力...使用 Coldfusion8,如果我将会话转储到文件:

<cfdump output="D:\ColdFusion8\logs\dump.txt" var="#Session#">

这包括:

accounttyp: whatever

如果我只转储这个参数,我会得到相同的结果:

<cfdump output="D:\ColdFusion8\logs\dump.txt" var="#Session.accounttyp#">

问题:
如果它已定义且可转储,那么如何检查isDefined如下:

<cfdump output="D:\ColdFusion8\logs\dump.txt" var="#IsDefined(Session.accounttyp)#"> 

结果是NO?如果它在那里,它应该被定义,不是吗?

感谢您的澄清。

4

2 回答 2

9

<cfdump output="D:\ColdFusion8\logs\dump.txt" var="#IsDefined(Session.accounttyp)#">

这是因为语法不正确。IsDefined期望变量的名称,即字符串。通过省略变量名周围的引号,会话变量首先被评估,它的(“whatever”)是传递给IsDefined. 所以代码实际上是检查一个名为“whatever”的变量,而不是“session.accounttyp”,即:

    <cfif IsDefined("whatever")>

这就是为什么结果是NO。这是正确的语法。(注意引号和没有英镑符号)。

    <cfif IsDefined("Session.accounttyp")>

但是,我建议切换到structKeyExists. 通常首选它,IsDefined因为它更精确。

于 2012-06-06T20:08:01.343 回答
1

这将返回一个布尔值:

#IsDefined(Session.accounttyp)#

因此,您要求它返回是或否。

更好的测试可能是这样的:

<cfif isDefined("Session.accounttyp")>
    <cfdump output="D:\ColdFusion8\logs\dump.txt" var="#Session.accounttyp#">
</cfif>
于 2012-06-06T20:06:46.270 回答