1

我的 Application.cfm 中有一个变量,用于存储 cfqueries 的数据源。

<cfset mydatasource= 'somedatasorce'>

我可以在任何正常的 cfm 页面中使用它,如下所示:

<cfset any_var = #mydatasource#>

我有一个 cfm 页面,它调用一个动态构建查询的 cfc。这是 CFC 的 URL 调用方法。

我无法使用上述语句访问 CFC 中的“mydatasource”。它说“mydatasource”未定义。我尝试将其存储在应用程序范围中并在 CFC 中访问,但它再次显示“mydatasource”在“应用程序”中未定义。

经过一番搜索,我发现需要实例化 CFC 才能访问 Application 范围。但是 URL Invocation 方法不会创建实例。

我可以使用查询字符串传递数据源,但我正在寻找更好、更安全的替代方案。

任何建议都受到高度赞赏。

谢谢!!:)

4

1 回答 1

1

我在这里向旧应用程序添加了许多 ajax 调用,为了获得一些应用程序特定的设置,我创建了一个名为 App.cfc 的文件。它的内容很简单:

<cfcomponent>
<cfscript>
this["datasource"] = "something";
..... and so on .....
</cfscript>
</cfcomponent>

然后,我正在对它们进行简单扩展 App 的 URL 调用的 CFC 文件。所以在那些 CFC 中我可以做到datasource="#this['Datasource']#"

可能不是完成工作的最“漂亮”的方法,但它一直在这里工作没有问题。

更新

我还应该提到,为了避免在 CFC 和 Application.cfm 中都有设置,我的 Application.cfm 中有类似的内容:

<cfscript>
objApp = CreateObject("component", "Components.App");
StructAppend(App, objApp);
</cfscript>

我正在使用的这些旧应用程序具有一个名为 App 的 VARIABLES 结构,它是所有应用程序变量的副本。我看不出为什么在这种情况下你不能只做一个附加到 VARIABLES 的结构,因为这似乎是你期望数据源之类的东西出现在你的 CFM 页面中的地方。

于 2013-09-05T16:11:57.207 回答