Application.CFC变量不可用

use*_*680 2 coldfusion application.cfc

在application.cfc中,我定义了一个必须在整个会话中可用的变量.

<cfcomponent>
 <cfset this.applicationTimeout = createTimeSpan(0,4,0,0)>
    <cfset this.sessionManagement = true>
    <cfset this.setClientCookies  = true>
    <cfset this.sessionTimeout    = createTimeSpan(0,0,90,0)>
    <cfset this.setdomaincookies  = true>

    <cfset this.myVar = "Hello">
</cfcomponent>
Run Code Online (Sandbox Code Playgroud)

我尝试了几种方法来获取.cfm中的myVar,但无济于事.

Approach 1: <cfoutput>#myVar#</cfoutput>
Approach 2: <cfoutput>#session.myVar#</cfoutput>
Approach 3: <cfoutput>#application.myVar#</cfoutput>
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

Chr*_*ers 10

你混淆了Application.cfc' thissofped设置与你自己的application-scoped变量的位置.

看看Ben Nadel的Application.cfc教程.

基本上,你希望把application.myVarOnApplicationStart():

<cfcomponent>
  <cfset this.applicationTimeout = createTimeSpan(0,4,0,0)>
  <cfset this.sessionManagement = true>
  <cfset this.setClientCookies  = true>
  <cfset this.sessionTimeout    = createTimeSpan(0,0,90,0)>
  <cfset this.setdomaincookies  = true>

  <cffunction name="OnApplicationStart">
    <cfset application.myVar = "Hello">
  </cffunction>
</cfcomponent>
Run Code Online (Sandbox Code Playgroud)

然后你应该能够在你的应用程序中引用它application.myVar.

  • 只是为了补充克里斯的观点,你错过了一个名字.<cfset this.name ="AUniqueNameHere"/>从我记得,如果你没有指定一个名字,ColdFusion将不断重建你的应用程序,我发现缺少变量错误是其副作用.另请注意,名称必须是唯一的,以避免与其他应用程序冲突. (4认同)