首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用包含的文件的函数使coldfusion忘记导入。这是正常的吗?

使用包含的文件的函数使coldfusion忘记导入。这是正常的吗?
EN

Stack Overflow用户
提问于 2012-09-24 13:09:47
回答 2查看 1.1K关注 0票数 5

我注意到,当我调用以前包含的(cfinclude) .cfm文件的函数时,此时发生的所有coldfusion (cfimport)都被遗忘了。好像你什么都没进口。我发现这是非常奇怪的行为,所以我分离了它,但是结果保持不变,即使在coldfusion 10中。

我的设置:

/example

  • functions.cfm
  • index.cfm
  • /components
    • MyCFC.cfc

functions.cfm:

代码语言:javascript
复制
<cfscript>
  function test(){
    return "test";
  }
</cfscript>

组件/MyCFC.cfc:

代码语言:javascript
复制
component  output="false"{}

index.cfm:

代码语言:javascript
复制
<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中进行测试

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-25 10:05:01

由于我做了大量的进口,我最近遇到了一些奇怪的行为,并报告说它做CF9 9-bugbase:https://bugbase.adobe.com/index.cfm?event=bug&id=3288035

ColdFusion只为当前文件解析导入,每当调用不同的文件时,就像“执行上下文”通过导入切换到该文件一样。因此,在您的情况下,当您执行新的ColdFusion时,在functions.cfm中查找导入。然后,当您调用当前文件的方法时,它会切换回并找到导入。

如果我是对的,如果您在导入后直接执行bar = new MyCFC();,那么您的代码应该可以工作。或者在创建类之前,可以在index.cfm中定义另一个方法并调用它。

要解决这个bug,您需要确保在“上下文切换”发生之前(在对象生命周期中第一次使用时)解决导入问题。因此,在外部方法之前调用new MyCFC();

@Adobe:修复这个很好;)

票数 3
EN

Stack Overflow用户

发布于 2012-09-24 14:55:28

我和@PeterBoughton在一起,这听起来像个窃听器。我也找不到类似的错误报告,所以我会继续提交它。同时,如果您放弃了“导入”,您仍然应该能够使用以下方法引用CFC:

代码语言:javascript
复制
bar = new components.MyCFC();

抓得好!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12565731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档