Coldfusion - 在Structure / Array中倾倒两个不同的组件

时间:2013-06-27 10:40:19

标签: coldfusion

我在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 />

图片

Direct Dump

Dump in Data Structure

1 个答案:

答案 0 :(得分:0)

对于我来说,它在CF 9.0.1(CF10上更新:)上运行正常,我从未遇到过你过去描述过的问题。如果这是一个真正的ColdFusion问题,人们会把它作为一个bug提出来,因为它会相当频繁地出现,我估计。

注意到你将CompB放入索引1的数组中,CompA放入元素2中,是吗?这与您在问题中的说法相冲突&#34;但是,当我将两个实例添加到数据结构(第一个插槽中的组件A,第二个插槽中的B)时,&#34;。所以人们会期望他们成为&#34;错误&#34;一路走来?