Я заметил, что когда я вызываю функцию ранее включенного (cfinclude) файла .cfm, все импорты coldfusion (cfimport), которые произошли на этом этапе, забываются. Как будто вы ничего не импортировали. Я нашел это очень странным поведением, поэтому я изолировал его, но результаты остались прежними, даже в coldfusion 10.
Моя установка:
/пример
- functions.cfm
- index.cfm
- /components
- MyCFC.cfc
functions.cfm:
<cfscript>
function test(){ return "test"; } </cfscript>
компоненты/MyCFC.cfc:
component output="false"{}
index.cfm:
<cfscript>
включает "functions.cfm"; импортировать компоненты.MyCFC;
foo = test(); бар = новый MyCFC(); </cfscript>
Этот код вызовет ошибку coldfusion: «Не удалось найти компонент или интерфейс ColdFusion MyCFC». когда foo = test();
удаляется или помещается после bar = new MyCFC();
, код работает нормально.
Не имеет значения, размещен ли импорт до или после включения. Всякий раз, когда вызывается включенная функция, импорт забывается.
Это баг или так и должно быть?
Испытано в режимах холодного плавления 9,0,0,251028 и холодного плавления 10,282462
.cfm
? Ваш код ведет себя по-другому, если компонент MyCFC имеет расширение файла.cfc
? - person Miguel-F   schedule 24.09.2012foo = test();
или помещаю его подbar = new MyCFC();
. - person jan   schedule 24.09.2012import
— это просто способ cfscript использоватьcfimport
, верно? Вы видели это в здесь: Тег cfimport должен быть на странице, которая использует импортированные теги. Например, если вы используете тег cfimport на странице, которую вы включаете в вызов cfinclude, вы не можете использовать импортированные теги на странице с тегом cfinclude. В таких случаях ColdFusion не выдает ошибку, но импортированные теги не запускаются. Дополнительные сведения см. в спецификации Java Server, стр. 1.1. - person Miguel-F   schedule 24.09.2012import
является альтернативой cfscript для<cfimport>
. Я также читал этот раздел в онлайн-документах, но этот код соответствует этому требованию. Импорт происходит в том же файле, который создает экземпляр импортируемого файла. И импорт действительно работает без строкиfoo = test();
. - person jan   schedule 24.09.2012