2013-07-23 93 views
1

我已經一個星期試圖解決這一問題分頁,但不會有好結果,Grails的分頁不工作

我有這個在我的控制器

PatientController{ 
    def show(Long id) { 
    def patientInstance = Patient.get(id) 
    if (!patientInstance) { 
     flash.message = message(code: 'default.not.found.message', args: [message(code: 'patient.label', default: 'Patient'), id]) 
     return 
    } 



    def historyInstance = History.findAllByPatient(patientInstance) 
    def total = historyInstance.size() 


    [historyInstance: historyInstance,patientInstance: patientInstance,historyInstanceTotal: total] 


    } 
} 

而且我對這個代碼鑑於

<g:each in="${historyInstance}" var="historyInstances" status="i"> 
     ... 
    </g:each> 

    <div class="pagination"> 
     <g:paginate total="${historyInstanceTotal}"/> 
    </div> 

我用params,最大的<g:paginate>,我什麼都試過,但沒有結果總是顯示在視圖中的一整套歷史。

+0

可能重複[Grails的分頁不起作用(http://stackoverflow.com/questions/17068081/grails-paginate-doesnt-work) – doelleri

回答

5

您需要將您的params傳遞給您正在使用的查找器,否則它將不知道如何分頁。 <g:paginate>標記僅用於顯示分頁鏈接,而不是實際執行分頁。此外total將需要使用countBy,因爲結果集將被限制爲當前頁面的結果。

def historyInstance = History.findAllByPatient(patientInstance, params) 
def total = History.countByPatient(patientInstance) 
+0

沒有countAllBy,我試過,但它顯示了一個錯誤,也許這是另一種方式,而不是'findAllBy',我聽說分頁只能用於列表 – ocespedes

+0

對不起,這是countBy – doelleri

+0

'findAllBy'和'list'都返回域對象的列表。 – doelleri