2013-01-09 21 views
6

के साथ शामिल है मैं एक सूची को जांचना चाहता हूं जिसमें एक विशिष्ट स्ट्रिंग है।ग्रोवी/Grails लोअरकेस

रूप में अच्छी तरह सूची में सभी प्रविष्टियों की जाँच के डंक में होना चाहिए के रूप में पहले

। लोअरकेस

मैं इस

def venueName = params.name 
def venueNameLists = Venue.executeQuery("select name from Venue") 
    if(venueNameLists.toLowerCase().contains(venueName.toLowerCase())){ 
      error = true; 
      log.debug("save :: duplicate name") 
      flash.message = "Venue name already exist"; 
      render(view: "create", model: [venueInstance: new Venue(params)]) 
      return 
     } 

तरह की कोशिश की त्रुटि

No signature of method: java.util.ArrayList.toLowerCase() is applicable for argument types:() values: []. Stacktrace follows: 

    groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.toLowerCase() is applicable for argument types:() values: [] 

उत्तर

15

मैं Aiolos से सहमत: बाधाओं का उपयोग करें या नाम से उदाहरण मामले को अनदेखा खोजने की कोशिश। लेकिन इसे ठीक करने का प्रयास करें *। (star-dot) ऑपरेटर:

venueNameLists*.toLowerCase().contains(venueName.toLowerCase()) 
6

देता है आप एक जाँच करना चाहते हैं किसी तत्व को सहेजने से पहले डुप्लिकेट प्रविष्टि, अपने डोमेन वर्ग पर constraints का उपयोग करें। यहां आप unique बाधा का उपयोग कर सकते हैं या यदि आपको इसकी आवश्यकता है तो case insensitive का उपयोग कर सकते हैं।

आप इसे मैन्युअल की जाँच करने की जरूरत है, इस प्रयास करें:

def venueWithNameFromParams = Venue.findByNameIlike(params.name) // ignore case 
if(venueWithNameFromParams){ 
    // venueName is in venueNameList 
} 

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

  • कोई संबंधित समस्या नहीं^_^