jan*_*jan 5 coldfusion coldfusion-9 coldfusion-10 cfimport
我注意到当我调用之前包含的(cfinclude).cfm文件的函数时,此时发生的所有coldfusion导入(cfimport)都被遗忘了.这就像你没有进口任何东西.我发现这种非常奇怪的行为所以我已经将它隔离了,但结果保持不变,即使在coldfusion 10中也是如此.
我的设置:
/例
functions.cfm:
<cfscript>
function test(){
return "test";
}
</cfscript>
组件/ MyCFC.cfc:
component output="false"{}
index.cfm:
<cfscript>
include "functions.cfm";
import components.MyCFC;
foo = test();
bar = new MyCFC();
</cfscript>
此代码将抛出coldfusion错误:"找不到ColdFusion组件或接口MyCFC".当foo = test();移除或放置后bar = new MyCFC();,该代码将运行得很好.
如果在包含之前或之后放置导入并不重要.每当调用包含的函数时,都会忘记导入.
这是一个错误还是它应该以这种方式表现?
在coldfusion 9,0,0,251028和coldfusion 10,282462中进行了测试
小智 3
由于我进行了大量导入,我最近遇到了一些奇怪的行为,并报告它执行 CF9-bugbase: https://bugbase.adobe.com/index.cfm ?event=bug&id=3288035
ColdFusion 仅解析当前文件的导入,每当您调用不同的文件时,就像“执行上下文”切换到带有导入的文件。因此,在您的情况下,当您执行new ColdFusion 时,会在functions.cfm中查找导入。然后,当您调用当前文件的方法时,它会切换回来并查找导入。
如果我是对的,如果您bar = new MyCFC();在导入后直接执行,您的代码应该可以工作。或者,您可以在创建类之前在index.cfm中定义另一个方法并调用它。
要解决该错误,您需要确保在发生“上下文切换”之前解决导入问题(在对象生命周期中首次使用时)。所以new MyCFC();在外部方法之前调用。
@Adobe:很高兴解决这个问题;)
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |