2014-03-01 62 views
0

我有我的控制器此列表代码,使用动态查找Grails的分页不工作

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="&laquo;" next="&raquo;" /> 

如果我使用purchaseRequestList.totalCount它的工作原理与默认列表,但显示结果时后,我搜索它给了我一个Exception evaluating property 'totalCount' for java.util.ArrayList, Reason: groovy.lang.MissingPropertyException: No such property: totalCount for class: rms.PurchaseRequest错误

如果我使用purchaseRequestList.count()它给了我这个Could not find which method count() to invoke from this list: public java.lang.Number java.util.Collection#count(groovy.lang.Closure) public java.lang.Number java.util.Collection#count(java.lang.Object)错误

回答

2

您需要使用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子句来拯救你打电话都listfindByparams.query设置。