我正在使用一个基于Application.cfm文件而不是Application.cfc文件的遗留应用程序。
需要能够在请求处理之后运行代码。(基本上,我希望使用<cfhtmlhead>标签将一些Javascript和CSS文件注入到每个加载的文档中。(在我使用GreaseMonkey用户脚本执行此操作之前,使用服务器端脚本将是最好的。)
根据我所读到的内容,我认为我应该能够使用onRequestEnd()函数来实现这一点,但是,我只在Application.cfc文件中看到过这种引用。我读到过,您可以将onRequestEnd.cfm文件与Application.cfm文件放在同一目录中,以便将其注册到onRequestEnd()函数,但系统不会映射到一个Application.cfm文件(即,我必须将此onRequestEnd.cfm文件放在许多目录中)。
有没有其他方法可以使用Application.cfm设置来注册这个onRequestEnd()函数?如果重要的话,我们正在运行Coldfusion 9。
发布于 2013-03-15 23:37:46
为了清楚起见,只有在使用Application.cfc文件时,onRequestEnd()方法才可用。
OnRequestEnd.cfm文件确实像Application.cfm文件一样工作,因为ColdFusion会自动查找它,并在找到时处理它的内容。请注意,如果您的应用程序具有Application.cfc文件,则不能使用OnRequestEnd.cfm页面。因此,假设您的应用程序没有Application.cfc文件,并且只使用Application.cfm文件,那么OnRequestEnd.cfm文件应该可以为您工作。您只需将希望在页面请求之后执行的CFML代码插入到该文件中。
如果您在不同的文件夹中有多个Application.cfm文件,那么,是的,您还需要在这些目录中复制/创建OnRequestEnd.cfm文件。您可以复制那些目录中的存根OnRequestEnd.cfm文件,这些目录的作用仅仅是从另一个单独的位置cfinclude您的实际代码。至少,一旦您有了所有的存根文件,您就可以在一个地方修改代码。
请参阅Structuring an application的文档(它是为ColdFusion 8编写的,但相同的规则仍然适用)。如果该页面被删除,下面是相关文本:
ColdFusion如何查找和处理应用程序定义页
ColdFusion使用以下规则来定位和处理定义特定于应用程序的元素的Application.cfc、Application.cfm和OnRequestEnd.cfm页面。ColdFusion定位这些文件的方式有助于确定应用程序的结构。
每次ColdFusion处理页面请求时,它都会执行以下操作:
- It searches the page's directory for a file named Application.cfc. If one exists, it creates a new instance of the CFC, processes the initial events, and stops searching. (ColdFusion creates a new instance of the CFC and processes its initialization code for each request.)
- If the requested page's directory does not have an Application.cfc file, it checks the directory for an Application.cfm file. If one exists, ColdFusion logically includes the Application.cfm page at the beginning of the requested page and stops searching further.
- If the requested page's directory does not have an Application.cfc or Application.cfm file, ColdFusion searches up the directory tree and checks each directory first for an Application.cfc file and then, if one is not found, for an Application.cfm page, until it reaches the root directory (such as C:). When it finds an Application.cfc or Application.cfm file, it processes the page and stops searching.
CFC
,则不会运行OnRequestEnd.cfm页
以下规则确定ColdFusion如何处理应用程序页面和设置:
对于每个请求,
注意:如果您的应用程序运行在区分大小写的UNIX平台上,则必须用大写字母拼写Application.cfc、Application.cfm和OnRequestEnd.cfm。
发布于 2013-03-19 02:59:14
由于您使用的是ColdFusion 9,因此升级到使用Application.cfc而不是尝试弄清楚如何插入OnRequestEnd.cfm文件将是相当简单的。另外,在Application.cfm中使用Application.cfc有很多优点。
以下是一些参考资料:
http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=appFramework_15.html
http://forum.hostek.com/showthread.php?724-Converting-to-Application-cfc
http://www.bennadel.com/blog/726-ColdFusion-Application-cfc-Tutorial-And-Application-cfc-Reference.htm
http://www.raymondcamden.com/index.cfm/2009/12/30/Best-of-CF9-Applicationcfc-Script-Template
http://cfruss.blogspot.com/2009/11/applicationcfc-reference-in-cfscript.html
https://stackoverflow.com/questions/15436005
复制相似问题