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谢谢,我已更新代码以避免此问题