如何检查参数中是否存在参数?

时间:2011-06-10 05:33:42

标签: grails groovy

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+ '%')

3 个答案:

答案 0 :(得分:17)

paramsMap,因此您可以使用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 */