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

标签 coldfusion railo

我正在使用 <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/

相关文章:

coldfusion - 试图在 Notepad++ 中找到 ColdFusion 的语法高亮器

Apache /Tomcat/Railo : Setting up two sites with same domain but two different ports

tomcat - Railo + Tomcat + IIS7 - 默认/空白主机头

mysql - 如何显示 child 的 child ?

coldfusion - 这是使用 301 重定向来控制使用哪个域名的最佳位置吗?

java - 带有 itext 的 OpenType 字体字距调整

java - Factual API 和 Coldfusion

postgresql - 如何在不将其保存为 "\%"的情况下使用 PostgreSQL 中的文字百分比文字 (%) 更新记录

java - 如何在两个结构上执行 "deep compare"或 "diff"?

javascript - 在这么多行之后结束表并开始新表