1

我被冷融合问题阻止了,任何建议都值得赞赏。现在让我描述一下我的问题。


我的网站根目录中有一个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,例如onSessionStart, onSessionEnd, onApplicationStart, onApplicationEnd...,但如果没有onRequest方法,您会请求test.cfm并得到错误。我只是不知道为什么。

4

2 回答 2

7

这是因为this范围引用了一个 cfc 实例。当您在 application.cfc 中包含 test.cfm 时,指的是 application.cfc 实例。当您直接调用 test.cfm 时,不存在,因为请求没有通过 application.cfc,因此您不在 cfc 实例中。

不确定您要做什么,但您可能不想在 cfc 之外使用它。如果您想从 test.cfm 转储应用程序范围,只需执行以下操作:

<cfdump var="#application#"/>
于 2009-07-09T10:21:54.207 回答
3

从 onRequestStart 方法返回 true 将为您加载页面。正如 dwb 所说,您的“this”指的是 Application.cfc,因为您已将其包含在其中一种方法中。如果您需要引用应用程序,请使用应用程序范围而不是“this”,除非您确实在 Application.cfc 中。

于 2009-07-09T16:00:19.067 回答