你好
我需要在Groovy中为提供的过滤器字段执行Domain类过滤。 这是代码示例:
User.findAll(name: filter.name, age: filter.age, department: filter.department)
是否存在一些语法糖来帮助我验证是否例如 filter.name 未提供,例如null或empty - 不要按此字段过滤。感谢。
答案 0 :(得分:2)
Abs有权利。以下是未提供过滤器字段的if语句的示例:
User.createCriteria().list {
if (filter.name) eq("name", filter.name)
if (filter.age) eq("age", filter.age)
if (filter.department) eq("department", filter.department)
}
答案 1 :(得分:0)
你可以在参数图上正确应用糖(假设filter是Map):
def args = filter.collectEntries{ k, v ->
[ 'age', 'name', 'department' ].contains( k ) && v ? [ (k):v ] : Collections.EMPTY_MAP
}
def users = User.findAll args