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 で相対パスを使用しているように見えます。

CFC は OpenBD に従って有効です (私は を参照でき./cfc/one.cfc?wsdl、などを使用して関数を呼び出すことができます./cfc/one.cfc?method=getData)。OpenBD で定義されたマッピングがあるかどうかは問題ではないようです。

動作するように思われる 1 つの回避策は、呼び出し元の CFM ファイルと同じ関数に CFC を配置することですが、多くの異なるページから 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">

(先頭の が OpenBD によって a.に置き換えられていることに注意し/てください。以前のバージョンの OpenBD では、これによりエラーが発生していました)

于 2013-04-04T09:03:45.990 に答える