在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#';
}
答案 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>