我在Coldfusion中发现了一个奇怪的错误,它将两个不同的组件添加到某种形式的数据结构中并将其转储出来。
出于这个问题的目的,我简化了我的代码。我有组件A和组件B,它们都有一个属性,一个构造函数和一个函数。
我创建了A的实例和B的实例。当我单独转储实例时,我看到了正确的元数据。
然而,当我将两个实例添加到数据结构(第一个插槽中的组件B,第二个插槽中的A)时,看起来好像来自插槽1中实例的方法在插槽2中的实例中重复,即使它们是不同的对象。即我看到CompBFunction,GetCompBProp,SetCompBProp被列为Comp A的方法。但是这些属性看起来是正确的。
值得一提的是,我无法在Comp A上调用Comp B的方法 - 这似乎是一个显示问题。我试着在我的对象'a'上调用CompBFunction,但它按预期失败了。
这里的任何帮助将不胜感激。我知道这不是一个大问题 - 但是当它们不存在时,在这里看到这些方法可能会产生误导。我的代码中有很多实例,我想建立一个混合组件的数据结构。
如果之前已经问过这个问题,我会道歉 - 我搜索了高低,但找不到任何信息。我正在使用CF9。
这是我的示例代码: -
组件A
component name="CompA" output="false" cache="false" accessors="true" {
property name="CompAprop" type="Numeric" getter="true" setter="true";
public CompA function init() output="false" {
return this;
}
public String function CompAFunction() output="false" {
return "All";
}
}
组件B
component name="CompB" output="false" cache="false" accessors="true" {
property name="CompBprop" type="Numeric" getter="true" setter="true";
public CompB function init() output="false" {
return this;
}
public String function CompBFunction() output="false" {
return "All";
}
}
index.cfm
<cfset a = new CompA() />
<cfset b = new CompB() />
<cfset test = ArrayNew(1) />
<cfset test[1] = b />
<cfset test[2] = a />
<cfdump var="#test#" /> <!--- METHODS FOR B APPEAR IN METADATA FOR A --->
<cfdump var="#test[1]#" /> <!--- METADATA CORRECT --->
<cfdump var="#test[2]#" /> <!--- METADATA CORRECT --->
<cfabort />
图片
答案 0 :(得分:0)
对于我来说,它在CF 9.0.1(CF10上更新:和)上运行正常,我从未遇到过你过去描述过的问题。如果这是一个真正的ColdFusion问题,人们会把它作为一个bug提出来,因为它会相当频繁地出现,我估计。
你有注意到你将CompB放入索引1的数组中,CompA放入元素2中,是吗?这与您在问题中的说法相冲突&#34;但是,当我将两个实例添加到数据结构(第一个插槽中的组件A,第二个插槽中的B)时,&#34;。所以人们会期望他们成为&#34;错误&#34;一路走来?