Coldfusion 为什么CFC中未定义元素?

Coldfusion 为什么CFC中未定义元素?,coldfusion,cfc,cfml,coldfusion-11,Coldfusion,Cfc,Cfml,Coldfusion 11,我有一个相当简单的CFC,它有一组属性,然后是一些与这些属性相关的基本函数。除了一个数组属性外,其他一切似乎都正常工作 property name="tags" type="array"; 这是属性的简单声明。但是,当我试图在其中一个成员函数中对它执行操作时,我得到一个错误 public void function addTag(thisTag) { var local.tags = this.getTags(); if (thisTag.isObjectValid()) {

我有一个相当简单的CFC,它有一组属性,然后是一些与这些属性相关的基本函数。除了一个数组属性外,其他一切似乎都正常工作

property name="tags" type="array";
这是属性的简单声明。但是,当我试图在其中一个成员函数中对它执行操作时,我得到一个错误

public void function addTag(thisTag) {
    var local.tags = this.getTags();
    if (thisTag.isObjectValid()) {          
        *ArrayAppend(local.tags,arguments.thisTag);*
        this.setTags(local.tags);
    }
}
带星号的行是我得到错误的地方(星号不在代码中)

我做错了什么

其他信息:

  • accessors=“true”在组件声明中设置
  • isObjectValid是另一个CFC中的自定义函数-它已经过测试并正常工作

  • 您尚未为tags属性设置默认值,因此它为null或未定义。您需要给它一个默认值,或者在尝试访问它之前在构造函数中赋值。或者,您可以按原样继续,但需要执行isNull(local.tags)检查并查看它是否已初始化。

    您尚未为tags属性设置默认值,因此它为null或未定义。您需要给它一个默认值,或者在尝试访问它之前在构造函数中赋值。或者,您可以按原样继续,但您需要执行isNull(local.tags)检查并查看它是否已初始化。

    在第二行后放置一个writedump(local),看看您得到了什么。与您的问题无关,但是var和local的组合不是冗余的吗?我得到了相同的错误,“Element tags在local中未定义”,但现在它发生在垃圾场的一行,而不是上面的星号行。是的,它是多余的。我后来添加了本地作用域,试图解决此问题,但忘记删除var。我将在修复问题后进行清理。WriteUp(local)不会抛出错误。如果有的话,它将返回一个空结构。无论如何,writedump(this.getTags())会发生什么情况?注意到趋势了吗?如果有疑问,请查看您的数据。在第二行后面放一个writedump(local),看看您得到了什么。与您的问题无关,但是var和local的组合不是冗余的吗?我得到了相同的错误,“Element TAGS在local中未定义”,但现在它发生在转储的行上,而不是上面的星号行。是的,它是冗余的。我后来添加了本地作用域,试图解决此问题,但忘记删除var。我将在修复问题后进行清理。WriteUp(local)不会抛出错误。如果有的话,它将返回一个空结构。无论如何,writedump(this.getTags())会发生什么情况?注意到趋势了吗?当你有疑问的时候,看看你的数据,这就是问题所在。如果类型是数组,当默认值必须是常量时,如何给它一个默认值?我最终创建了一个Init()函数,并将ArrayNew(1)设置为数组属性。不过,似乎应该有一种方法可以默认,而不必在Init中执行。是的,这就是方法。我不明白为什么属性默认值必须是常量。也许Adobe bug库中有这样一张罚单。如果没有,您可以添加一个:)这就是问题所在。如果类型是数组,当默认值必须是常量时,如何给它一个默认值?我最终创建了一个Init()函数,并将ArrayNew(1)设置为数组属性。不过,似乎应该有一种方法可以默认,而不必在Init中执行。是的,这就是方法。我不明白为什么属性默认值必须是常量。也许Adobe bug库中有这样一张罚单。如果没有,您可以添加一个:)
    Element TAGS is undefined in LOCAL.