我已经花了一周的时间来解决这个分页问题,但没有取得好成绩,
我在控制器中有这个
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 :(得分:5)
您需要将params
传递给您正在使用的取景器,否则它将不知道如何分页。 <g:paginate>
标记仅用于显示分页链接,而不是实际执行分页。另外,total
需要使用countBy
,因为结果集将仅限于当前结果页。
def historyInstance = History.findAllByPatient(patientInstance, params)
def total = History.countByPatient(patientInstance)