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