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

jai*_*jai 7 grails groovy

for ( boldParam in [para1, para2, para2, para4, para5] ) {
    if(/* boldParam exists in params */)
        ilike(boldParam,'%' + params.boldParam + '%')
    }
}
Run Code Online (Sandbox Code Playgroud)

我想写上面的内容.我试图避免以下多个if语句:

if (params.para1)
     ilike('para1','%' + params.para1+ '%')
if (params.para2)
     ilike('para2','%' +params.para2+ '%')
if (params.para3)
     ilike('para3','%' + params.para3+ '%')
Run Code Online (Sandbox Code Playgroud)

Bur*_*ith 18

params是一个Map,所以你可以使用containsKey():

for (boldParam in [para1, para2, para2, para4, para5]) {
   if (params.containsKey(boldParam)) {
      ilike(boldParam, '%' + params.boldParam + '%')
   }
}
Run Code Online (Sandbox Code Playgroud)


Dan*_*cek 6

试图检索不存在的属性会给你null.这意味着你可以做到

if (!params.missing) {
   println("missing parameter is not present within request.")
}
Run Code Online (Sandbox Code Playgroud)

在不同的用例中,您还可以尝试安全解除引用操作符?..例如:

params.email?.encodeAsHTML()
Run Code Online (Sandbox Code Playgroud)