我正在使用 <cfproperty />
使用隐式 setter/getter 和 二传手在 ColdFusion (Railo) 中。
但是,对于结构和数组等更复杂的值,我如何附加到这些值?
<cfproperty name="settings" type="struct" />
如何将项目附加到名为设置的属性中?如果我执行以下操作:
<cfset setSettings(structAppend(getSettings(), { "hello" = "world" })) />
我收到以下错误:
java.lang.NullPointerException
我在这里错过了什么吗?我是 cfproperty 标签的新手,我认为这会节省时间,但我想不通。
另外,作为奖励,我将如何为这些复杂的数据类型设置默认值?
谢谢,
米奇
最佳答案
这里有几件事...
<cfset setSettings(structAppend(getSettings(), { "hello" = "world" })) />
设置是
struct
但是 structAppend()
返回一个 bool 值。在此行之前添加您的结构。其次,结构总是通过引用传递,也就是说,如果你这样做 getSettings()
你会得到一个 struct
,您可以对其进行更改。再次调用 getSettings()
将返回相同的 struct
使用更新的设置。你只需要这样:
<cfset structAppend(getSettings(), { "hello" = "world" }) />
最后一件事。您可能会收到空指针异常,因为
getSettings()
开始未初始化。在您的 cfc 中,在构造函数区域(在您的属性之后),您应该设置一个初始设置 struct
, 像这样:<cfset setSettings({}) />
关于coldfusion - 如何附加到 CFPROPERTY 中的结构集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16469984/