CF 10中的可变范围与CF MX7相比

我遇到了我的ColdFusion 10代码的一个奇怪的问题。 我是ColdFusion的新手,对我来说很容易。 奇怪的原因是因为它似乎没有出现在这个平台的旧版本(即MX 7)中。

首先有点信息:

我有两个环境。 ColdFusion 10和ColdFusion MX 7(分别为IIS 7和IIS 5)。 在ColdFusion 10环境中,我有一个具有以下语句的Application.cfc文件...

<cfset CompanyLogoText = "Acme Company">

Application.cfc文件位于Web根目录(mydomain.com)中。 我在mydomain.com/pages/default.cfm的web根目录的一个子文件夹中也有一个CFM文件。 它包含以下标记...

<cfoutput><p>#CompanyLogoText#</p></cfoutput>

问题

当我导航到mydomain.com/pages/default.cfm ,我收到了来自coldfusion的错误。 错误是“变量COMPANYLOGOTEXT未定义”。

奇怪的部分

我在ColdFusion MX 7中没有收到此错误。唯一的区别是CF MX 7环境使用Application.cfm文件,但具有相同的准确行。

如何获取pages/default.cfm文件以在CF 10环境中查看我的变量CompanyLogoText

这是完整的标记

的Application.cfc

<cfcomponent>
<cfset This.name = "test_cf">
<cfset This.Sessionmanagement="yes">
<cfset This.Sessiontimeout="#createtimespan(0,0,10,0)#">
<cfset This.applicationtimeout="#createtimespan(5,0,0,0)#">
<cfset This.setclientcookies="no" >
<cfset This.clientmanagement="no">


<cffunction name="onApplicationStart">

    <cfset CompanyLogoText = "Acme Company">    

</cffunction>



<cffunction name="onRequestStart">
    <cfargument name="requestname" required=true />
    <cfset CompanyLogoText = "Acme Company">    


</cffunction>


</cfcomponent>

页/ Default.cfm

<cftry>

<cfoutput><p>#CompanyLogoText#</p></cfoutput>

<cfcatch>

<p>Could not read CompanyLogoText<br/><br/>

<cfoutput>
<br/>Message:  #cfcatch.message#
<br/>Details:  #cfcatch.detail#.

</cfoutput>

</cfcatch>

</cftry>

这就是Application.cfmApplication.cfc之间的区别

使用onRequest() ,设置变量,然后cfinclude目标文件。 这是分享variables范围的唯一方法。

https://wikidocs.adobe.com/wiki/display/coldfusionen/onRequest

例如

<cffunction name="onRequest" returnType="void"> 
    <cfargument name="targetPage" type="String" required=true/> 

    <cfinclude template="globalVars.cfm">

    <cfset variables.foo = "bar">

    <cfinclude template="#Arguments.targetPage#">
</cffunction>

QUOTE:CF8:从Application.cfm迁移到Application.cfc

将onRequest方法放入设置Variables范围变量的任何代码,并添加一个cfinclude标记,该标记包含由方法的Arguments.Targetpage变量指定的页面。


如上所述,您的application.cfc需要正确格式化。 你最好的选择是给这个阅读并相应地格式化你的.cfc。

http://www.bennadel.com/blog/726-ColdFusion-Application-cfc-Tutorial-And-Application-cfc-Reference.htm


没有看到有答案。 如果在子目录中有一个application.cfm文件,它将覆盖根目录中的application.cfc。 只是一种可能性...

链接地址: http://www.djcxy.com/p/78277.html

上一篇: Variable scope in CF 10 versus CF MX7

下一篇: Is await supposed to restore Thread.CurrentContext?