Grails Controller中的重用标准

Tho*_*ler 4 grails closures criteria

通常,您在Grails生成的Controller列表方法中有以下最后一行:

[userInstanceList: User.list(params), userInstanceTotal: User.count()]
Run Code Online (Sandbox Code Playgroud)

如果我想按照特定条件限制用户,它看起来像

[userInstanceList: User.list(params) {
   ilike('login', '%test%')
 }, userInstanceTotal: User.count() {
   ilike('login', '%test%')
 }]
Run Code Online (Sandbox Code Playgroud)

但这违反了DRY原则 - 重用标准闭包的最佳方法是什么?

小智 6

来自条件构建器的分页结果(结果类是PagedResultList)具有一个属性,totalCount您可以像调用count()相同的条件一样使用它:

def userInstanceList = User.createCriteria().list(params) {
    ilike 'login', '%test%'
}
[userInstanceList: userInstanceList, userInstanceTotal: userInstanceList.totalCount]
Run Code Online (Sandbox Code Playgroud)