我的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
文件,但具有相同的确切行。
问题
如何在CF 10环境中获取pages/default.cfm
文件以查看变量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>
答案 0 :(得分:4)
这是Application.cfm
和Application.cfc
使用onRequest()
,设置变量,然后cfinclude
目标文件。这是分享variables
范围的唯一方法。
https://wikidocs.adobe.com/wiki/display/coldfusionen/onRequest
e.g。
<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>
引用:CF8: Migrating from Application.cfm to Application.cfc
在onRequest方法中放入设置Variables范围的任何代码 变量并添加包含指定页面的cfinclude标记 方法的Arguments.Targetpage变量。
答案 1 :(得分:0)
如前所述,您的application.cfc需要正确格式化。你最好的选择是给你一个读取并相应地格式化.cfc。
答案 2 :(得分:0)
暂时没有看到答案。如果子目录中有application.cfm文件,它将覆盖root中的application.cfc。只是一种可能......