2009-07-09 48 views
1

我被一個coldfusion問題阻塞了,任何建議都會被讚賞。現在讓我記下我的問題。Coldfusion關於Application.cfc中onRequest方法的問題


我有一個Application.cfc在我的網站的根,它的內容如下:

<cfcomponent output="false"> 
    <cffunction name="onRequest" returnType="void"> 
     <cfargument name="thePage" type="string" required="true"> 
     <cfinclude template="#arguments.thePage#"> 
    </cffunction> 
</cfcomponent> 

而且我有一個CFM模板,該模板的名稱是test.cfm,它的內容被列爲如下:

<cfdump var="#variables.this#"><br /><br /><br /><br /><br /><br /> 
<cfdump var="#this#"> 

現在如果你要求test.cfm,一切正常,但是當我刪除onRequest方法Application.cfc和請求test.cfm再次,它投訴"Element THIS is undefined in VARIABLES. ",我不知道爲什麼,有人可以解釋它嗎?萬分感謝。

PS:

你可以添加儘可能多的功能集成到Application.cfc,如onSessionStartonSessionEndonApplicationStartonApplicationEnd ..., 但如果沒有一個onRequest方法,你要求test.cfm並得到錯誤。我只是不知道爲什麼。

回答

7

這是因爲這個範圍是指一個cfc實例。當您在application.cfc 中包含test.cfm時,此引用application.cfc實例。當你直接調用test.cfm時這個不存在,因爲請求沒有經過application.cfc,所以你不在cfc實例中。

不知道你在做什麼,但你可能不想在cfc之外使用這個。如果你想從傾倒的test.cfm應用範圍只是這樣做,而不是:

<cfdump var="#application#"/> 
3

返回true從onRequestStart方法將加載頁面爲您服務。正如dwb所說,你的'this'指的是Application.cfc,因爲你已經從一個方法中包含了它。如果您需要引用應用程序,請使用應用程序範圍而不是「this」,除非您真的在Application.cfc中。

+1

這是不正確的 - 對任何盲目投票未經測試或確切知道它是正確的人都感到羞恥!如果您不包含請求的文件,您將看不到輸出。 (請參閱:http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=AppEvents_08.html)或許您正在考慮onRequestEnd事件?你說的onRequestStart是真的。 (請參閱:http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=AppEvents_08.html) – 2009-07-10 18:33:56