我的 Controller 中有这个使用动态查找器的列表代码
def listPurchaseRequest(Integer max){
params.max = Math.min(max ?: 5, 100)
def purchaseRequestList = PurchaseRequest.list (params)
if ( params.query) {
purchaseRequestList = PurchaseRequest.findAllByRequestByLikeOrRequestNumberLike("%${params.query}%", "%${params.query}%", params)
}
[purchaseRequestInstanceList: purchaseRequestList,
purchaseRequestInstanceTotal: //this]
}
除了分页之外,我的搜索和列表正常运行。
<g:paginate total="${purchaseRequestInstanceTotal}" params="${params}" maxsteps="3" prev="«" next="»" />
如果我使用purchaseRequestList.totalCount
,它可以使用默认列表,但是当我搜索后显示结果时,它会给我一个异常评估java.util.ArrayList的属性“totalCount” ,原因:groovy.lang.MissingPropertyException:没有这样的属性:类的totalCount:rms.PurchaseRequest
错误
如果我使用purchaseRequestList.count()
,它会给我这个无法找到要从此列表中调用的方法count():public java.lang.Number java.util.Collection #count(groovy.lang.Closure) public java.lang.Number java.util.Collection#count(java.lang.Object)
错误
最佳答案
您需要使用CountBy*
的搜索方法。试试这个
def listPurchaseRequest(Integer max){
params.max = Math.min(max ?: 5, 100)
def purchaseRequestList, count
if (params.query) {
purchaseRequestList = PurchaseRequest.findAllByRequestByLikeOrRequestNumberLike("%${params.query}%", "%${params.query}%", params)
count = PurchaseRequest.countByRequestByLikeOrRequestNumberLike("%${params.query}%", "%${params.query}%")
} else {
purchaseRequestList = PurchaseRequest.list (params)
count = purchaseRequestList.totalCount
}
[purchaseRequestInstanceList: purchaseRequestList,
purchaseRequestInstanceTotal: count]
}
仅供引用,我将 .list()
移至 else
子句中,以节省您同时调用 list
和 findBy
当 params.query
设置时。
关于java - Grails 分页不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22111762/