如何附加到CFPROPERTY中的结构集?

时间:2013-05-09 19:52:51

标签: coldfusion railo

我正在使用<cfproperty />在ColdFusion(Railo)中使用隐式 getters setters

但是,对于更复杂的值,如结构和数组,我如何附加到这些?

<cfproperty name="settings" type="struct" />

如何将项目附加到名为settings的属性中?如果我执行以下操作:

<cfset setSettings(structAppend(getSettings(), { "hello" = "world" })) />

我收到以下错误:

  

显示java.lang.NullPointerException

我在这里遗漏了什么吗?我是cfproperty标签的新手,并认为这会节省时间,但我无法弄明白。

另外,作为奖励我如何为这些复杂数据类型设置默认值?

谢谢, MIKEY

1 个答案:

答案 0 :(得分:5)

在这里结交一些事情......

<cfset setSettings(structAppend(getSettings(), { "hello" = "world" })) />

设置为structstructAppend()返回布尔值。你的结构是否在此行之前附加。其次,结构总是通过引用传递,这意味着,如果你getSettings()得到struct,你可以对其进行更改。对getSettings()的另一次调用将返回具有更新设置的相同struct

所有你需要的是:

<cfset structAppend(getSettings(), { "hello" = "world" }) />

最后一件事。您可能会获得空指针异常,因为getSettings()启动未初始化。在您的cfc中,在构造函数区域(在您的属性之后),您应该设置初始设置struct,如下所示:

<cfset setSettings({}) />