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名前、つまり文字列が必要です。変数名を囲む引用符を省略すると、セッション変数が最初に評価され、その(「何でも」) が に渡されIsDefinedます。したがって、コードは実際には「session.accounttyp」ではなく「whatever」という名前の変数をチェックしています。

    <cfif IsDefined("whatever")>

そのため、結果はNOです。これは正しい構文です。(引用符とポンド記号がないことに注意してください)。

    <cfif IsDefined("Session.accounttyp")>

ただし、に切り替えることをお勧めしstructKeyExistsます。IsDefinedより正確であるため、一般的に優先されます。

于 2012-06-06T20:08:01.343 に答える
1

これはブール値を返します。

#IsDefined(Session.accounttyp)#

したがって、yes または no を返すように求めています。

より良いテストはこれかもしれません:

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