groovy 如何在Grails框架中使createCriteria的where过滤器动态化

5us2dqdw  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(154)

我在groovy中使用分页进行搜索为了在不同的页面中分页,我放置了一个计数过滤器“where”。我想在这里动态地获得colName,但是对于where过滤器,我们需要放置一个域的示例。在这里,域是Release。有没有其他方法来计算计数?

def search(Integer max, Integer offset) {                                                                                                                 
def searchText = params.searchText                                                                                                                    
def colName = params.colName                                                                                                                          
def ReleaseList                                                                                                                                  
def ReleaseCount                                                                                                                                 
params.max = params.max ? params.int('max') : 10                                                                                                      
if (searchText) {                                                                                                                                     
    def rel = Release.createCriteria()                                                                                                           
    List<Release> releasesList = rel.list() {                                                                                                    
        eq(colName, searchText)                                                                                                                       
    } as List<Release>                                                                                                                           
    ReleaseList = releasesList                                                                                                                   
    ReleaseCount = Release.where {                                                                                                          
        colName == searchText                                                                                                                         
    }.count()                                                                                                                                         
} else {                                                                                                                                              
    ReleaseList =  Release.list(params)                                                                                                      
    ReleaseCount = Release.count()                                                                                                          
}                                                                                                                                                     
render(template: 'grid', model: [ReleaseInstanceList: ReleaseList, ReleaseInstanceCount: ReleaseCount], searchText: searchText)

}

xzlaal3s

xzlaal3s1#

如果为list()方法传入max参数,它将返回一个PagedResultList示例,该示例是一个包含totalCount匹配项的项的 Package 器。

PagedResultList releases = Release.where { colName == searchText }.list(max: 10)
int totalCount = releases.totalCount

这也适用于CreateCriteria

相关问题