Groovy/Grails包含小写

maa*_*aaz 8 java grails groovy list

我想检查包含特定字符串的列表.

在检查列表中的所有条目之前以及sting应该是.小写

我试过这样的

 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
        }
Run Code Online (Sandbox Code Playgroud)

给出错误

  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: []
Run Code Online (Sandbox Code Playgroud)

Mr.*_*Cat 20

我同意aiolos:使用约束或尝试按名称忽略大小写查找实例.但要解决这个问题,请尝试使用*.(star-dot)运算符:

venueNameLists*.toLowerCase().contains(venueName.toLowerCase()) 
Run Code Online (Sandbox Code Playgroud)


aio*_*los 6

如果要在保存元素之前检查重复条目,请在域类上使用约束.在这里,您可以使用唯一约束或实现您自己的约束,如果您需要它不区分大小写.

如果您需要手动检查,请尝试以下操作:

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