为什么没有定义参数,如果我可以转储它并且它在Coldfusion中有值?

fre*_*ent 0 variables parameters coldfusion defined

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

<cfdump output="D:\ColdFusion8\logs\dump.txt" var="#Session#">
Run Code Online (Sandbox Code Playgroud)

这包括:

accounttyp: whatever
Run Code Online (Sandbox Code Playgroud)

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

<cfdump output="D:\ColdFusion8\logs\dump.txt" var="#Session.accounttyp#">
Run Code Online (Sandbox Code Playgroud)

问题:
如果已定义并可转储,那么如何检查isdefined如下:

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

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

谢谢你的澄清.

Lei*_*igh 9

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

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

    <cfif IsDefined("whatever")>
Run Code Online (Sandbox Code Playgroud)

这就是结果的原因NO.这是正确的语法.(注意引号和缺少英镑符号).

    <cfif IsDefined("Session.accounttyp")>
Run Code Online (Sandbox Code Playgroud)

但是,我建议改用structKeyExists.它通常是优选的,IsDefined因为它更精确.