2011-06-10 11 views
5
for (boldParam in [para1, para2, para2, para4, para5]) { 
    if(/* boldParam exists in params */) 
     ilike(boldParam,'%' + params.boldParam + '%') 
    } 
} 

मैं ऊपर जैसा कुछ लिखना चाहता हूं। मैं निम्नलिखित कई बयान करता है, तो बचने के लिए कोशिश कर रहा हूँ:पैरामीटर में पैरामीटर मौजूद है या नहीं, यह जांचने के लिए कैसे करें?

if (params.para1) 
    ilike('para1','%' + params.para1+ '%') 
if (params.para2) 
    ilike('para2','%' +params.para2+ '%') 
if (params.para3) 
    ilike('para3','%' + params.para3+ '%') 

उत्तर

15

params एक Map है, तो आप containsKey() उपयोग कर सकते हैं:

for (boldParam in [para1, para2, para2, para4, para5]) { 
    if (params.containsKey(boldParam)) { 
     ilike(boldParam, '%' + params.boldParam + '%') 
    } 
} 
6

संपत्ति है कि आप null दे देंगे मौजूद नहीं है पुनः प्राप्त करने की कोशिश कर रहा। इसका मतलब है कि आप बस

if (!params.missing) { 
    println("missing parameter is not present within request.") 
} 

कर सकते हैं विभिन्न उपयोग मामले में आप भी सुरक्षित भिन्नता ऑपरेटर ?. को एक कोशिश दे सकता है।

params.email?.encodeAsHTML() 
+0

अच्छा और सरल यह हर बार करता है। – GeoGriffin

+0

यह सुनिश्चित करने के लिए काम करता है कि परम भी है: 'if (!! params.non-missing) { println (" अनुपलब्ध पैरामीटर अनुरोध के भीतर मौजूद है। ") }' – HumanInDisguise

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 */ 
संबंधित मुद्दे

 संबंधित मुद्दे