我将论点传递为
<cfif StructKeyExists(arguments,'userid') and arguments.userid neq ''>
有效
现在如果我有这样的论点:
<cfif isDefined('arguments.structform.user') and arguments.structform.user neq ''>
有效
如果我通过以上作为:
<cfif StructKeyExists(arguments,'structform.user') and arguments.structform.user neq ''>
- Coldfusion无法识别并完全跳过
使用coldfusion 10
答案 0 :(得分:4)
structKeyExists
不是递归的,它只能查找当前结构上的键。在您的情况下,您需要测试arguments
是否有structform
密钥,然后另外检查arguments.structform
是否有user
密钥。
<cfif StructKeyExists(arguments,'structform') and StructKeyExists(arguments.structform,'user') and arguments.structform.user neq ''>
如果您只是定义了参数,那可能会容易得多。
<cfargument name="structform" type="struct" default="#{user:''}#">
现在你可以假设参数存在,只测试arguments.structform.user
的值。
<cfif arguments.structform.user neq ''>
即使您只使用空结构定义了structForm
参数,它仍然会比您最初做的更好。
<cfargument name="structform" type="struct" default="#{}#">
<cfif structKeyExists(arguments.structform, "user") and arguments.structform.user neq ''>