2013-01-09 33 views
6

我想檢查包含特定字符串的列表。Groovy/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

我同意艾俄羅斯:使用約束,或者嘗試找到實例的名字忽略大小寫。但要解決這個問題,請嘗試*(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 
} 
相關問題