【发布时间】:2021-02-26 14:50:20
【问题描述】:
ColdFusion 服务器已更新至 ColdFusion 2018(从 ColdFusion 9 或 11)。
该服务器上最古老的应用程序之一包含如下代码:< cfif arguments[key] NEQ "">
以前,这似乎等同于isDefined("arguments.key") 或StructKeyExists(arguments, key)。
今天,即使isDefined("arguments.key") 为假,StructKeyExists(arguments, key) 也为负,<cfif arguments[key] NEQ ""> 失败,因为 arguments[key] 不再像空字符串那样表现。事实上,< cfdump var="#arguments[key]#"> 显示的是“未定义”。
为了避免在使用空字符串而不是StructKeyExists 的地方更改代码,我能做些什么吗?也许是 ColdFusion 服务器参数? (THIS.enableNullSupport 没有帮助)
【问题讨论】:
-
奇怪的是它曾经以这种方式工作。因为如果与常规结构一起使用,相同的代码会引发错误。 (Adobe 在想什么......?)无论如何,我怀疑没有设置可以更改行为,您需要更新代码:/
-
检查您的代码中的
cfparam,它将这些不存在的变量默认为空字符串 (default="")。它也可能与范围出血有关。如果不查看实际代码,很难判断您在哪里遇到问题。 -
@Alex - 参数结构的行为似乎与常规结构不同,并且似乎在 CF2018 前后发生了变化trycf.com/gist/14effc106da7f5cabf6cbb48da8a4a17/…
-
@SOS 是的,你是对的。我已经为此写了一个答案。
标签: coldfusion undefined coldfusion-11 coldfusion-2016 coldfusion-2018