问题标签 [application.cfc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
817 浏览

coldfusion - 更改 CF9 中的 OnRequestEnd 行为(是 ColdFusion 9 错误 - 无法在 OnRequestEnd 中引用请求变量)

这是一个奇怪的。我没有任何运气在谷歌上找到任何关于此的信息,所以我想知道你们中是否有人以前见过这个?

我在请求范围内有一个 CFC,然后在 onRequestEnd 事件中,我将该 CFC 从请求范围中取出并用它做一些请求结束的事情。问题是我无法在我的 onRequestEnd 事件中引用该变量,因为它会产生一个错误,指出它没有在范围内定义......但这就是它变得非常奇怪的地方以及为什么我知道这是一个错误(它不仅仅是一个怀疑)...如果我 DUMP 变量,cfdump 标记成功显示 CFC 及其所有内容...然后产生相同的“在范围内未定义”错误。这是一个屏幕截图。

请求变量错误的屏幕截图

所以……有人见过这个吗?因为我完全被难住了。我已经安装了 9.0.1 更新程序和两个累积修补程序。

ps 是的,我知道它说的是 OnRequestEnd.cfm,但这实际上是在 Application.cfc 的 onRequestEnd 方法中——它是最初可追溯到 CF5 的框架的遗留物,随它去吧。;P


编辑:好的,它变得更奇怪了......我尝试使用评估()将其设置为一个局部变量,这显然有效,因为然后我转储了局部变量。转储仍然有效,即使它位于发生错误的行之后的第 2 行?!!

在此处输入图像描述


编辑 2: 编辑:这是 Application.cfc 中的代码,其中包括发生错误的文件:

它似乎与方法和包含文件的组合有关。

如果我像这样执行 onRequestStart 中的方法,它仍然会失败:

但是如果我像这样将文件包含在 onRequestStart 中,它工作正常。

然而!显然还有更多,因为我无法创建一个简单的测试用例。如果我创建一个包含非常简单的 application.cfc 的新项目并复制所有这些细节,它就可以正常工作。因此,除了方法名和文件名之外,框架中还有其他东西对其做出了贡献。

而且文件名似乎并没有真正起作用,因为如果我像这样更改文件名,它仍然会以同样的方式失败:


编辑3:好的,它与文件无关......它确实如此,但与文件名无关......在onRequestEnd.cfm的底部是这段代码

如果我注释掉那些 StructClear 语句,那么错误就会消失,这告诉我它正在执行 OnRequestEnd.cfm 两次......我认为这意味着 CF9 改变了 CFABORT 标记的行为,它现在执行 onRequestEnd 事件当标签被使用时......它在以前版本的cf中没有......

我没有找到这方面的文档,但我确实找到了 Ben Nadel的这篇关于 CFLOCATION 标签行为的博客,所以它似乎更普遍地是关于 onRequestEnd 事件。现在似乎在 CF9 中,无论页面如何完成执行,onRequestEnd 事件都会在最后执行......这是对所有以前版本的更改,因此它与我创建的代码混在一起,以便实际导致这种情况发生在以前的版本上。由于我导致执行 onRequestEnd 然后提前中止页面,CF 现在执行 onRequestEnd,中止,然后由于中止再次执行 onRequestEnd。

幸运的是,模板顶部的这段相当简单的代码似乎解决了这个问题:

0 投票
2 回答
3263 浏览

session - 使用不带 cookie 的 Coldfusion 会话

再会,

我们正在尝试在 Coldfusion 8 中实现一个不使用 cookie 的 API - 相反,我们通过 GET 或 POST 为每个请求传递 cfid、cftoken 和 jsessionid。

我们正在使用 mach-ii 及其 SessionFacade。我不知道您是否需要有关此的任何进一步信息;如果你这样做,请提及。

在 Coldfusion Administrator 中,客户端变量设置为“注册表”,内存变量为“使用 J2EE 会话变量、启用应用程序变量、启用会话变量”中的每一个打勾。

我的 Application.cfc 伪构造函数看起来像

onSessionStart 或 onSessionEnd 中没有任何内容。

为了验证会话,我使用了一个插件,在它的 preProcess 方法中我有:

我想我不明白的第一件事是,在使用 J2EE 会话时是否有必要发送 cfid 和 cftoken?还是 jsessionid 完全完全取代了它们的功能?

其次,我希望这个应用程序(而不是整个服务器)不发送 cookie。在我的 Application.cfc 中,我将 cookie 设置为禁用,但它仍然尝试发送包含 jsessionid 的 cookie。

这有我认为奇怪的副作用:

在禁用 cookie 的 Firefox 上,输入 URL 的 cfid、cftoken 和 jsessionid 正确地保持会话状态。

但我们也将它与接受 cookie 的 iPhone 应用程序一起使用。在我们通过将 cookie 保存到本地存储来修复它之前,当您关闭应用程序并重新打开它时,cookie 丢失了。不管在 URL 中发送仍然有效的 cfid、cftoken 和 jsessionid 的事实,它仍然给我们一个“未登录”错误。

所以我有三个问题:

首先,在使用 J2EE 会话时,是否有需要存储和重新发送 cfid 和 cftoken 的情况?

其次,是否有一个应用程序级别设置我可以用来强制 jsessionid 手动存储,而不是使用 cookie?

第三,在哪个阶段提取 jsessionid 并从内存中填充会话变量?这是我可以调试或询问的东西吗,所以我可以说些什么

0 投票
1 回答
88 浏览

templates - 我可以为从 application.cfc 插入的 Coldfusion 模板指定一个“目标”吗

只是想知道(Coldfusion新手)。我在这个页面上,展示了如何在 Coldfusion 中设置用户登录/注销的示例。

简单的问题:

如果用户没有登录,application.cfc 会插入一个登录表单。

问题:
有没有办法设置这个登录表单结束的目标?一些目标/选择器/任何东西让它出现在它应该出现的地方?

感谢您的信息!

0 投票
1 回答
646 浏览

variables - 在 Coldfusion8 application.cfc 中的何处定义应用程序和会话变量?

我正在尝试设置我的第一个 application.cfc 文件。

我试图在“事件基础”上调用变量,如下所示:

我认为这会很好地工作,但事实证明,它没有,因为我需要先声明所有内容,如下所示:

我的问题
为什么我应该使用 CF 事件来声明变量。如果我无论如何都需要在事件之外声明,我可以为自己节省一行代码并声明并分配初始值?我是不是做错了,或者事件只是为了断言而不是为了声明?

感谢您的输入!

0 投票
1 回答
2085 浏览

properties - 如何从外部属性文件将映射包含到 Application.cfc 中?

我在 Application.cfc 中设置映射时遇到问题 我们有不同的服务器(dev、QS、prod),每个服务器都有一些不同的路径。我想通过配置文件设置服务器特定的路径和变量。在 ApplicationStart 上,您读取 ini 文件并设置您的系统。 http://www.raymondcamden.com/index.cfm/2005/8/26/ColdFusion-101-Config-Files-AGoGo 这很好用。

通常,您在 Applcation.cfc 中设置映射,如下所示:

在普通 cfm 文件中的某个地方,我通过以下方式创建了一个名为 test 的 cfc:

我只想在onApplicationsStart设置一次映射

但这不起作用,因为 this.mappings 是空的并且是下一个请求。:(

把它放到 OnRequestStart

我收到无法找到组件的错误。这很奇怪。

将结构放入应用程序范围

如何调用我的组件?

不工作。

所以我有3个目标。

  1. 从 ini 文件中读取所有路径和映射
  2. 在 ApplicationStart 阅读一次
  3. 在源代码中易于使用。
0 投票
1 回答
131 浏览

forms - 如何在 Coldfusion 中为某些类型的表单(用户交互等)设置全局表单处理程序?

我正在寻找在我继承的 Coldfusion8 站点中构建表单处理的最佳方法。

有许多与某些交互相关的形式,例如“用户交互”(注册/登录/注销/更新)。我已经按照这个示例设置了一个全局表单/验证处理程序,它工作正常。

我已经稍微改变了设置,因为我是在使用 Coldfusion 的头几个月,所以我想知道以下处理方式是否有意义:

在我的application.cfc 中,我为所有“用户交互表单”声明会话默认值,如下所示:

这个想法是为所有表单字段设置默认值,所以我总是提交“完整表单”,无论用户是简单地登录还是注册。

然后在我的user-form-handler.cfc 中声明验证标准:

每当我提交与用户相关的表单时,我都会提交到 user-form-handler.cfc 中的PROCESS函数,该函数会覆盖SETFORMDATA中设置的会话默认值,然后在提交到数据库并返回响应对象之前验证表单字段.

我的问题:虽然这可行,但我不确定是否要在 Application.cfc 中的onSessionstart
中为所有表单输入声明默认值。当我想通过这个中央处理程序运行所有与用户相关的表单提交时,有没有更好的方法来做到这一点?

0 投票
2 回答
549 浏览

coldfusion - 如何在 ColdFusion 10 中禁用 sameformfieldsasarray?

sameformfieldsasarray有文件时如何禁用Application.cfm

我正在将旧应用程序从 ColdFusion 9 移植到 ColdFusion 10。该站点使用了一个旧学校Application.cfm文件。

我看到 10 添加了一个新设置this.sameformfieldsasarray(这应该默认关闭,但不幸的是,对于我刚刚设置的全新安装,它是“开启”的。

我不能设置this.sameformfieldsasarrayfalse 因为我们有Application.cfm而不是Application.cfc,而且我在管理员或文档中找不到任何内容。

该代码是从 Ubuntu 12.04 x64 上全新安装的 CF10 运行的。@Adam 验证示例代码在 Windows Server 2003 x64 上运行。


代码https ://gist.github.com/2931343

样本提交截图:http : //imgur.com/Q9DAi

服务器范围截图:http : //imgur.com/9iwWL

提交的错误报告https ://bugbase.adobe.com/index.cfm?event=bug&id=3214734

0 投票
1 回答
547 浏览

coldfusion - 有没有办法保护 ColdFusion 中的文件夹,而不在每个文件夹中使用 Application.cfc?

我能弄清楚如何保护文件夹的唯一方法是在每个单独的文件夹中包含一个基本的 Application.cfc,包括子文件夹。

如果文件/test/thisfile.cfm是安全的并将未登录的用户发送到登录页面,但是该文件夹/test/test2/还必须有一个 Application.cfc 或者用户可以直接访问而test/test2/thatfile.cfm不会出现问题。

我知道必须有比这更好的方法,我只是不确定它是什么,Google 上的所有内容都在告诉我使用“登录向导”或安装框架。这两个都不是我的选择。

另一个考虑因素,不幸的是,这必须在 MX 7 中工作。如果 CF 9 中有更好的选择,我会很高兴听到它们,但优先考虑的是 MX 7。

0 投票
2 回答
355 浏览

coldfusion - ColdFusion 10 application.cfc 错误:计算活动会话数

在 adobe Coldfusion 10 文档中,在 Application.cfc 中定义应用程序及其事件处理程序,有一个示例 Application.cfc 包含以下函数。查看代码后,我想知道以下代码中是否存在拼写错误/错误:

应该是:

  • (A) cflock ... scope="SESSION"
  • (B) cflock ... scope="APPLICATION"

?

如果是(A)那么我很困惑。有人可以解释为什么吗?

0 投票
1 回答
1092 浏览

coldfusion - Coldfusion-10 错误:从 init_datetype 函数返回的值不是 pagedatetype_cfc 类型

在 Coldfusion 10 中,我收到以下错误: “从 Application.cfc 调用事件处理程序方法时发生异常。方法名称是:onRequestStart。”

根本原因:详细信息: “如果将组件名称指定为返回类型,则可能找不到该组件的定义文件或无法访问。”

根本原因:消息: “从 init_pagedatetype_ver04 函数返回的值不是 gg2_pagedatetype_cfc_ver04 类型。”

*任何想法我做错了什么?这是相关文件和相关代码 *

文件 #1:“\application.cfc”

文件 #1:“\inc_CFC\gg2_pagedatatype_cfc_ver04.cfc”