带有列表的Grails控制器搜索条件

时间:2013-10-22 23:38:20

标签: grails

我需要根据各种标准进行搜索。

  1. 如果名称包含指定的字符串。
  2. 如果名称包含指定的字符串和列表中的字符串。
  3. 如果名称包含列表中的一个字符串。
  4. 我有以下代码,但它不起作用。这段代码有多糟糕?

    def taskList = Object.createCriteria().list(params) {
    if (params.query) {
        ilike("name", "%${params.query}%")
    }
    if (params.nameList) {
        params.nameList.split("&").each {
                or {
                  ilike("name", "%${it}$%")
                }
        }
        }
    

    用例2&的结果为空。我做错了什么?我该怎么办?

    干杯

2 个答案:

答案 0 :(得分:0)

我将in运算符用于3. case

list{
  or{
    if( params.query ) ilike "name", "%${params.query}%"
    if( params.nameList ) 'in' 'name', params.nameList.split("&")
  }
}

答案 1 :(得分:0)

def taskList = Object.createCriteria().list(params) {
    def names = []
    if(params.nameList){
       names = nameList.split("&")
    }
    or{
        if (params.query){ilike("name", "%${params.query}%")}
        and{
            if (params.query){ilike("name", "%${params.query}%")}
            if(names){'in'('name', names)}
        }
        if (names) {
            names.each {name->
                or {
                  ilike("name", "%$name$%")
                }
            }
        }
    }
}

未经测试,但您可以尝试使用上述功能吗?我宁愿选择HQL来实现您的需求。