在ColdFusion组件中传递参数

时间:2014-04-14 19:04:59

标签: coldfusion

我将论点传递为

<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

1 个答案:

答案 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 ''>