【发布时间】:2013-09-06 08:50:40
【问题描述】:
我的 Application.cfm 中有一个变量,用于存储 cfqueries 的数据源。
<cfset mydatasource= 'somedatasorce'>
我可以在任何正常的cfm页面中使用它,如下所示:
<cfset any_var = #mydatasource#>
我有一个 cfm 页面,它调用一个动态构建查询的 cfc。这是CFC的URL调用方法。
我无法使用上述语句访问 CFC 中的“mydatasource”。它说“mydatasource”未定义。我尝试将其存储在应用程序范围中并在 CFC 中访问,但它再次说“mydatasource”在“应用程序”中未定义。
经过一番搜索,我发现需要实例化 CFC 才能访问 Application 范围。但是 URL Invocation 方法不会创建实例。
我可以使用查询字符串传递数据源,但我正在寻找更好、更安全的替代方案。
非常感谢任何建议。
谢谢!! :)
【问题讨论】:
-
您使用的是什么版本的 ColdFusion?在 ColdFusion 9+ 中,您可以在 Application.cfc 中使用
this.datasource = 'dsname'来设置将与任何cfquery或 ORM 操作一起使用的“默认”数据源。 -
"我发现需要实例化 CFC 才能访问 Application 范围。但是 URL Invocation 方法没有创建实例。"你在哪里读到的?我很确定这不是真的。然而@ScottStroz 的回答可能是这里最好的方法。
-
它的 CF9 但我不能使用 Application.CFC 文件。我们可以在 Application.cfm 文件中设置数据源吗?
-
不确定。试试看,让我们知道它是否有效。顺便说一句 - 为什么,以所有神圣的名义,你使用的是 CF9 而不是 Application.cfc?
-
现在我想了想,我相当肯定
this.datasource只能在Application.cfc 中工作。您可以在 Application.cfm 中尝试的另一件事是设置request.datasource,您应该能够在远程调用的 CFC 中访问它。
标签: coldfusion scope instance cfc