ColdFusion代码如果条件失败

时间:2014-08-14 15:45:59

标签: coldfusion

在ColdFusion中使用cfscript代码,以下似乎对我来说是正确的,如果client_discount为0或NULL,只是不生成UniqueKey,使用现有的else使用new。但它确实以某种方式工作,我不确定我在这里缺少什么,尝试不同的cflib UDF也是:

这是我的代码:

f = structnew();
f.discountoffered = '#arguments.structform.client_discount#';
writedump(arguments);
result = structFindKeyWithValue(f,f.discountoffered,"0","ALL");
writedump(result);

if((arguments.structform.client_discount EQ 0) 
    OR (arguments.structform.client_discount NEQ "")) { 
    f.orderunique = generateRandomKey();
}
else {
   f.orderunique = '#arguments.structform.orderunique#';
}

2 个答案:

答案 0 :(得分:1)

在ColdFusion中,NULL有点不可思议。

我会通过对值进行处理来处理这个问题,因此它会得到一个值,我决定它是否存在。

f = structNew()下添加此代码 - 或者在函数的开头添加,并不重要。

param name="arguments.structForm" default="#structNew()#;
param name="arguments.structForm.client_discount" default="0";

这样,如果client_discount不存在,则设置为0 - 第一行是确保参数中存在structform,如果不存在,则将其设置为空结构。

然后你的if语句只需要检查它是否为0。

if( arguments.structForm.client_discount == 0 ){
    f.orderunique = generateRandomKey();
}
else{
    f.orderunique = arguments.structform.orderunique;
}

当然......在使用之前,您需要验证arguments.structForm.orderunique是否存在。

答案 1 :(得分:1)

我认为这就是你要做的事情

<cfscript>
f = structnew();
    if(not isnull(arguments.structform.client_discount)){
      f.discountoffered = '#arguments.structform.client_discount#';
      result = structFindKeyWithValue(f,f.discountoffered,"0","ALL");
       if((arguments.structform.client_discount EQ 0))
        f.orderunique = generateRandomKey();
         else
        f.orderunique = '#arguments.structform.orderunique#';
    }
else {
     f.orderunique = '#arguments.structform.orderunique#';
}
</cfscript>