我正在使用一个遗留应用程序工作,该应用程序是基于使用Application.cfm
文件而不是Application.cfc
files.
需要能够在请求处理后运行代码。 (基本上,我想使用<cfhtmlhead>
标签将一些 Javascript 和 CSS 文件注入到每个加载的文档中。在我使用 GreaseMonkey 用户脚本执行此操作之前,但服务器端的东西最好。)
从我读到的内容来看,我认为我应该能够做到这一点onRequestEnd()
函数,但是,我只见过关于Application.cfc
文件。我读过你可以把onRequestEnd.cfm
文件与以下文件位于同一目录中Application.cfm
文件以使其注册到onRequestEnd()
功能,但系统没有映射到一个Application.cfm
文件(即我必须抛出这个onRequestEnd.cfm
文件在很多目录中)。
还有其他方法可以注册这个吗onRequestEnd()
函数使用Application.cfm
设置?如果有必要,我们正在运行 Coldfusion 9。
只是为了澄清,onRequestEnd()
该方法仅在您使用Application.cfc
file.
The OnRequestEnd.cfm
文件确实像Application.cfm
文件中的 ColdFusion 会自动查找它并在找到时处理它的内容。请注意如果您的应用程序有 Application.cfc 文件,则无法使用 OnRequestEnd.cfm 页面。所以假设你没有Application.cfc
您的应用程序的文件并且仅使用Application.cfm
文件然后OnRequestEnd.cfm
文件应该适合你。您所需要做的就是将您希望在页面请求之后执行的 CFML 代码插入到该文件中。
如果你有几个Application.cfm
文件分布在各个文件夹中,那么,是的,您还需要复制/创建OnRequestEnd.cfm
这些目录中的文件也是如此。您也许可以复制stub OnRequestEnd.cfm
这些目录中的文件仅执行以下操作cfinclude
来自另一个单一位置的实际代码。至少这样一旦你拥有了所有的stub您可以在一个地方修改代码。
请参阅文档构建应用程序 http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=appFramework_06.html(它是为 ColdFusion 8 编写的,但相同的规则仍然适用)。如果该页面被删除,以下是相关文本:
ColdFusion 如何查找和处理应用程序定义页面
ColdFusion 使用以下规则来查找和处理定义应用程序特定元素的 Application.cfc、Application.cfm 和 OnRequestEnd.cfm 页面。 ColdFusion 定位这些文件的方式有助于确定您如何构建应用程序。
每次 ColdFusion 处理页面请求时,它都会执行以下操作:
-
当 ColdFusion 开始处理请求时,它会执行以下操作:
- 它在页面目录中搜索名为Application.cfc 的文件。如果存在,它将创建一个新的 CFC 实例、处理初始事件并停止搜索。 (ColdFusion 创建 CFC 的新实例并为每个请求处理其初始化代码。)
- 如果请求页面的目录没有 Application.cfc 文件,它将检查该目录中是否有 Application.cfm 文件。如果存在,ColdFusion 会在逻辑上将 Application.cfm 页面包含在所请求页面的开头,并停止进一步搜索。
- 如果请求页面的目录没有 Application.cfc 或 Application.cfm 文件,ColdFusion 将搜索目录树并首先检查每个目录是否有 Application.cfc 文件,如果没有找到,则检查 Application.cfm 页面,直到到达根目录(如C:)。当它找到 Application.cfc 或 Application.cfm 文件时,它会处理该页面并停止搜索。
- ColdFusion 处理所请求页面的内容。
- When the request ends, ColdFusion does the following:
- 如果您有 Application.cfc,ColdFusion 将处理 CFC 的 onRequestEnd 方法并释放 CFC 实例。
- 如果您没有 Application.cfc,但有 Application.cfm 页面,ColdFusion 将在与 ColdFusion 用于当前页面的 Application.cfm 页面相同的目录中查找 OnRequestEnd.cfm。 ColdFusion 不会搜索该目录之外的内容,因此它不会运行驻留在另一个目录中的 OnRequestEnd.cfm 页面。此外,如果应用程序页面上出现错误或异常,或者应用程序页面执行 cfabort 或 cfexit 标记,则 OnRequestEnd.cfm 页面不会运行。
以下规则决定 ColdFusion 如何处理应用程序页面和设置:
- ColdFusion 对于每个请求仅处理一个 Application.cfc 或 Application.cfm 页面。如果 ColdFusion 页面具有指向附加 ColdFusion 页面的 cfinclude 标记,则 ColdFusion 在包含附加页面时不会搜索 Application.cfc 或 Application.cfm 页面。
- 如果 ColdFusion 页面具有 cfapplication 标记,它将首先处理任何 Application.cfc 或 Application.cfm,然后处理 cfapplication 标记。该标记可以覆盖应用程序文件中的设置,包括应用程序名称和 cfapplication 标记属性设置的行为。
- 您可以拥有多个使用相同应用程序名称的 Application.cfc 文件、Application.cfm 文件和 cfapplication 标记。在这种情况下,所有具有相同名称的页面共享相同的应用程序设置和应用程序范围,并且可以设置和获取该范围内的所有变量。如果文件之间的设置(例如会话超时)不同,ColdFusion 将使用 cfapplication 标记或最近处理的文件的参数设置。
Note:如果您的应用程序在区分大小写的 UNIX 平台上运行,则必须使用大写字母拼写 Application.cfc、Application.cfm 和 OnRequestEnd.cfm。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)