Grails 创建条件过滤器的最佳方法是什么?

Grails 创建条件过滤器的最佳方法是什么?,grails,Grails,我有以下域类 class Something { User user BigDecimal balance Boolean cancelled String status Client client Date dateCreated Date lastUpdated static constraints { ... } ... } 我需要为这个域类创建一个过滤器ui如下所示 List<Something filter(Client client,

我有以下域类

class Something {
  User user
  BigDecimal balance
  Boolean cancelled
  String status
  Client client
  Date dateCreated
  Date lastUpdated

  static constraints { ... }

  ...
}
我需要为这个域类创建一个过滤器ui如下所示

List<Something filter(Client client, String status, BigDecimal balance) (
  Something.withCriteria {

    if (client) {
      eq 'client', client
    }    

    if (status) {
      eq 'status', status 
    }    

    if (balance != null) {
      eq 'balance', balance 
    }    

    // other predicates go here....   
  }
}

我不知道如何创建此筛选器所有条件都是可选的,因此我需要您的建议,了解创建条件筛选器的最佳方法是什么

谢谢

我愿意这样做

List<Something filter(Client client, String status, BigDecimal balance) (
  Something.withCriteria {

    if (client) {
      eq 'client', client
    }    

    if (status) {
      eq 'status', status 
    }    

    if (balance != null) {
      eq 'balance', balance 
    }    

    // other predicates go here....   
  }
}

list您可以根据相应元素的可用性在条件查询中使用多个
if
块?我不知道我可以在条件中使用ifs。这对编写Groovy truth有很大帮助,请注意与Groovy truth相关的意外行为。例如,如果
balance
为1,将执行
eq'balance',balance
标准,但如果
balance
为0,则不会执行。如果您的目的是查询所有余额为0的
某物
,则该代码将不起作用。@JeffScottBrown谢谢,我已更新代码以避免此问题