通常,Grails生成的Controller列表方法中具有以下最后一行:
[userInstanceList: User.list(params), userInstanceTotal: User.count()]
如果我想通过特定条件限制用户,它看起来像
[userInstanceList: User.list(params) {
ilike('login', '%test%')
}, userInstanceTotal: User.count() {
ilike('login', '%test%')
}]
但这违反了DRY原则-重用标准闭包的最佳方法是什么?
最佳答案
来自条件构建器(结果类为PagedResultList)的分页结果具有属性totalCount
,可以像在相同条件下调用count()
一样使用该属性:
def userInstanceList = User.createCriteria().list(params) {
ilike 'login', '%test%'
}
[userInstanceList: userInstanceList, userInstanceTotal: userInstanceList.totalCount]