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)
如果要在保存元素之前检查重复条目,请在域类上使用约束.在这里,您可以使用唯一约束或实现您自己的约束,如果您需要它不区分大小写.
如果您需要手动检查,请尝试以下操作:
def venueWithNameFromParams = Venue.findByNameIlike(params.name) // ignore case
if(venueWithNameFromParams){
// venueName is in venueNameList
}
Run Code Online (Sandbox Code Playgroud)