Относительный / Абсолютный путь CFC в Open BlueDragon
Я пытаюсь перенести существующую кодовую базу ColdFusion из Adobe 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) я не могу вызвать функции CFC из Javascript. Прокси объявлен как и раньше, и я могу создать объект в 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 отображение или нет.
Единственный обходной путь, который, кажется, работает, - это использовать CFC в той же функции, что и вызывающий файл CFM, но это не очень хорошее решение, когда я хочу повторно использовать код CFC со многих разных страниц.
У кого-нибудь есть CFC в других каталогах, работающих под OpenBD?
1 ответ
Для дальнейшего использования: эта проблема была решена (более или менее) в OpenBD 3.0, выпущенном в начале марта 2013 года.
В версии 3.0 код, который создает файл.js прокси-сервера AJAX, был изменен и теперь содержит следующие строки:
javascript.append( " this.remoteCFC = '" );
javascript.append( CFC.replace('.', '/') );
javascript.append( ".cfc';\r\n" );
Хотя он по-прежнему не учитывает сопоставления на стороне сервера, он по крайней мере позволяет ссылаться на путь, который не является дочерним по отношению к текущей странице.cfm:
<cfajaxproxy cfc=".cfc.one" jsclassname="cfcOne">
(обратите внимание на ведущие .
, который заменяется на /
по OpenBD. В предыдущих версиях OpenBD это приводило к ошибке)