0

我正在尝试将现有的 ColdFusion 代码库从 Adob​​e CF8 迁移到 OpenBD。我的文件包括这样的内容:

/cfc/one.cfc
/cfc/two.cfc

/app/page.cfm

在 CF8 中,我有一个从“cfc”到“/cfc”的映射,在 page.cfm 中我有:

<cfajaxproxy cfc="cfc.one" jsclassname="oneCfc">
<cfajaxproxy cfc="cfc.two" jsclassname="twoCfc">

然后在 Javascript 中,我可以使用以下命令调用 CFC:

var c = new oneCfc();

……生活很美好。


但是,在 Open BD (v2.0.3b) 下,我似乎无法从 Javascript 调用 CFC 函数。代理像以前一样声明,我可以在 Javascript 中创建对象,但是当我尝试调用一个函数时,我的浏览器开发工具中出现以下错误:

POST http://127.0.0.1:8080/app/cfc/one.cfc 404 (Not Found) 

当它尝试调用该函数时,它似乎在 Javascript 中使用相对路径,即使它已经创建了对象。

根据 OpenBD,CFC 是有效的(我可以浏览到./cfc/one.cfc?wsdl,并且可以使用./cfc/one.cfc?method=getData等调用函数)。我是否在 OpenBD 中定义了映射似乎并不重要。

似乎可行的一种解决方法是让 CFC 与调用 CFM 文件具有相同的功能,但是当我想重用来自许多不同页面的 CFC 代码时,这不是一个很好的解决方案。

有没有人在 OpenBD 下工作的其他目录中找到 CFC?

4

1 回答 1

1

供将来参考:这个问题在 2013 年 3 月上旬发布的 OpenBD 3.0 中(或多或少)得到了解决。

在 3.0 中,创建 AJAX 代理 .js 文件的代码被修改为包含以下行:

javascript.append( " this.remoteCFC = '" );
javascript.append( CFC.replace('.', '/') );
javascript.append( ".cfc';\r\n" );

虽然它仍然不考虑任何服务器端映射,但它至少允许您引用不是当前 .cfm 页面的子路径:

<cfajaxproxy cfc=".cfc.one" jsclassname="cfcOne">

(note the leading ., which is replaced with a / by OpenBD. In previous versions of OpenBD this would generate an error)

于 2013-04-04T09:03:45.990 回答