我正在使用<cfproperty />
在ColdFusion(Railo)中使用隐式 getters 和 setters 。
但是,对于更复杂的值,如结构和数组,我如何附加到这些?
<cfproperty name="settings" type="struct" />
如何将项目附加到名为settings的属性中?如果我执行以下操作:
<cfset setSettings(structAppend(getSettings(), { "hello" = "world" })) />
我收到以下错误:
显示java.lang.NullPointerException
我在这里遗漏了什么吗?我是cfproperty标签的新手,并认为这会节省时间,但我无法弄明白。
另外,作为奖励我如何为这些复杂数据类型设置默认值?
谢谢, MIKEY
答案 0 :(得分:5)
在这里结交一些事情......
<cfset setSettings(structAppend(getSettings(), { "hello" = "world" })) />
设置为struct
但structAppend()
返回布尔值。你的结构是否在此行之前附加。其次,结构总是通过引用传递,这意味着,如果你getSettings()
得到struct
,你可以对其进行更改。对getSettings()
的另一次调用将返回具有更新设置的相同struct
。
所有你需要的是:
<cfset structAppend(getSettings(), { "hello" = "world" }) />
最后一件事。您可能会获得空指针异常,因为getSettings()
启动未初始化。在您的cfc中,在构造函数区域(在您的属性之后),您应该设置初始设置struct
,如下所示:
<cfset setSettings({}) />