首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对Application.cfm文件使用onRequestEnd()的Coldfusion

对Application.cfm文件使用onRequestEnd()的Coldfusion
EN

Stack Overflow用户
提问于 2013-03-15 23:20:02
回答 2查看 1.8K关注 0票数 2

我正在使用一个基于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。

EN

回答 2

Stack Overflow用户

发布于 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处理页面请求时,它都会执行以下操作:

  1. 当ColdFusion开始处理请求时,它会执行以下操作:

代码语言:javascript
复制
- 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

  • ColdFusion处理请求页的contents.

  • When请求结束后,ColdFusion将执行以下操作:
  • 如果有Application.cfc,ColdFusion将处理CFC的onRequestEnd方法并释放CFC实例。
  • 如果没有Application.cfc,但有Application.cfm页,ColdFusion将在与ColdFusion用于当前页的Application.cfm页相同的目录中查找CFC。ColdFusion不会在该目录之外进行搜索,因此它不会运行驻留在另一个目录中的OnRequestEnd.cfm页面。此外,如果应用程序页上存在错误或异常,或者如果应用程序页执行cfabort或cfexit tag.

,则不会运行OnRequestEnd.cfm页

以下规则确定ColdFusion如何处理应用程序页面和设置:

对于每个请求,

  • ColdFusion仅处理一个Application.cfc或Application.cfm页面。如果ColdFusion页具有指向其他ColdFusion页的cfinclude标记,则当包含该附加页时,ColdFusion不会搜索Application.cfc或Application.cfm页。
  • 如果ColdFusion页具有cfapplication标记,它将首先处理任何Application.cfc或Application.cfm,然后再处理cfapplication标记。标签可以覆盖来自应用程序文件的设置,包括应用程序名称和由can应用程序标签设置的行为attributes.
  • You可以具有使用相同应用程序名称的多个Application.cfc文件、Application.cfm文件和can应用程序标签。在这种情况下,具有相同名称的所有页面共享相同的应用程序设置和应用程序范围,并且可以设置和获取此范围内的所有变量。如果of应用程序标记或最近处理的文件的参数设置在不同的文件中有所不同,则ColdFusion将使用这些设置。

注意:如果您的应用程序运行在区分大小写的UNIX平台上,则必须用大写字母拼写Application.cfc、Application.cfm和OnRequestEnd.cfm。

票数 8
EN

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15436005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档