2012-06-06 24 views
0

只是有點無能......使用Coldfusion8,如果我傾倒我的會話到文件:爲什麼參數沒有定義,如果我可以轉儲它並且它在Coldfusion中有一個值?

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

這包括:

accounttyp: whatever 

我得到同樣的結果,如果我只是轉儲這個參數:

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

問:
如果它的定義和轉儲-AB嘞,怎麼就檢查isDefined像這樣:

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

原來是NO?如果它在那裏應該被定義,不是嗎?

感謝您的澄清。

回答

9

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

這是因爲語法不正確。 IsDefined預計名稱的變量即字符串。通過省略變量名稱周圍的引號,會話變量首先得到評估,其(「無論」)是什麼被傳遞到IsDefined。因此,代碼實際上是檢查一個名爲「什麼」,而不是「session.accounttyp」,即變量:

<cfif IsDefined("whatever")> 

這就是爲什麼結果是NO。這是正確的語法。 (請注意報價和缺少英鎊符號)。

<cfif IsDefined("Session.accounttyp")> 

但是,我建議切換到structKeyExists。它通常優於IsDefined,因爲它更精確。

+0

好的。理解。謝謝! – frequent

+0

在修補舊代碼(doh!)時,我仍然會這樣做。 –

1

這會返回一個布爾值:

#IsDefined(Session.accounttyp)# 

所以,你問它是或否返回。

一個更好的檢驗可能是這樣的:

<cfif isDefined("Session.accounttyp")> 
    <cfdump output="D:\ColdFusion8\logs\dump.txt" var="#Session.accounttyp#"> 
</cfif> 
相關問題