for ( boldParam in [para1, para2, para2, para4, para5] ) {
if(/* boldParam exists in params */)
ilike(boldParam,'%' + params.boldParam + '%')
}
}
我想写上面的内容。我试图避免以下多个if语句:
if (params.para1)
ilike('para1','%' + params.para1+ '%')
if (params.para2)
ilike('para2','%' +params.para2+ '%')
if (params.para3)
ilike('para3','%' + params.para3+ '%')
答案 0 :(得分:17)
params
是Map
,因此您可以使用containsKey()
:
for (boldParam in [para1, para2, para2, para4, para5]) {
if (params.containsKey(boldParam)) {
ilike(boldParam, '%' + params.boldParam + '%')
}
}
答案 1 :(得分:6)
尝试检索不存在的属性会为您提供null
。这意味着你可以简单地做到
if (!params.missing) {
println("missing parameter is not present within request.")
}
在不同的用例中,您还可以尝试安全取消引用运算符?.
。例如:
params.email?.encodeAsHTML()
答案 2 :(得分:0)
我使用的替代方案:
['param1','param2','param3','param4','param5'] /* and it also could come from a service */
.each {
if (params["${it}"]) filters["${it}"] = params["${it}"]
} /* Do it in your controller and then send $filters to your service */