Forms 测试是否定义了动态变量

Forms 测试是否定义了动态变量,forms,coldfusion,Forms,Coldfusion,我的表单(UUID)中有一些带有动态名称的输入变量。 为了避免错误,我测试变量是否已定义,但奇怪的是,函数已定义并返回一个错误(当字段未像收音机或复选框那样发送时) HTML结果的格式为: Yes <input type="radio"id="content_BB66F151-CB09-1C8C-CCF53DE1A92652FC" name="content_BB66F151-CB09-1C8C-CCF53DE1A92652FC" value="1"> No <input

我的表单(UUID)中有一些带有动态名称的输入变量。 为了避免错误,我测试变量是否已定义,但奇怪的是,函数已定义并返回一个错误(当字段未像收音机或复选框那样发送时)

HTML结果的格式为:

 Yes <input type="radio"id="content_BB66F151-CB09-1C8C-CCF53DE1A92652FC"
name="content_BB66F151-CB09-1C8C-CCF53DE1A92652FC" value="1">  
No <input type="radio" id="content_BB66F151-CB09-1C8C-CCF53DE1A92652FC"
name="content_BB66F151-CB09-1C8C-CCF53DE1A92652FC" value="0">
但总是同样的错误。如果该字段在提交的表单中,则可以正常工作

我的代码中有什么错误?

在定义了
作为参数时,不能对结构键名称(即变量)使用连字符(以及其他各种字符,如
#
)。相反,您可以:

structKeyExists
不计算表达式,因此不受变量名解析的约束。但是,由于这一事实,您无法方便地链接
structKeyExists

例如:

isDefined("someStruct.parentKey.childKey")
转化为

structKeyExists(VARIABLES, "someStruct")
and structKeyExists(someStruct, "parentKey")
and structKeyExists(someStruct["parentKey"], "childKey")

请注意,您需要检查链中每个键的存在性。但它允许使用任何字符作为键名。

您是否尝试重命名复选框以进行测试?试试StructKeyExists(属性,“内容”和MD\u字段\u ID)谢谢Alexander,strucKeyExist完成了这项工作。我从未想过“IsDefined”会对表达式求值,下次我将删除连字符以下划线替换,以避免此类问题。
 IsDefined("attributes.content_#MD_FIELD_ID#") or
attributes["content_#MD_FIELD_ID#"]
isDefined("someStruct.parentKey.childKey")
structKeyExists(VARIABLES, "someStruct")
and structKeyExists(someStruct, "parentKey")
and structKeyExists(someStruct["parentKey"], "childKey")