Я, возможно, не идеальный эксперт по разбивке на страницы (обычно я сам немного разбираюсь в этом), но если это свойство hasmany Задачи проекта, которое вы пытаетесь разбить на страницы, Project.list (), вероятно, не то, что вам нужно .
Если ваши параметры имеют .max и .offset (как, например, вы используете тег , и вы предоставили ему действие контроллера списка задач), то, что я обычно делаю, это использую attributeBuilder с несколько скрытый тип возвращаемого значения PagedResultList. Я предполагаю, что есть лучший способ сделать это, но что-то вроде
def yourProjectInstance = Project.get(params.yourProjectId)
def taskPagedResult = Task.createCriteria().list(max: params.max as Integer, offset: params.offset as Integer) {
eq('project', yourProjectInstance)
//optionally, if you're using sortableColumn here as well, you can do
//order(params.sort, params.order)
}
render view: 'taskPagedTable', model: [taskList: taskPagedResult, taskCount: taskPagedResult.totalCount()]
Следует поместить список задач params.max в список задач вашего представления, но все равно дать вам общее количество задач для этого проекта в переменной taskCount.
Надеюсь, это поможет!
Ссылка: http://blog.jeffshurts.com/2010/04/grails-pagination-and-criteriabuilder/
EDIT:
Я предполагаю, что здесь отсутствует атрибут action для вашего тега paginate, особенно если точное попадание по URL дает правильные результаты для вас.
Вы должны указать свой тег paginate на любое действие контроллера, имеющее ваш кодовый блок.
Еще одна вещь, которую я могу вспомнить, глядя на код вашего контроллера, - ваша переменная размера может вводить в заблуждение; это будет то же самое, что и params.max было. Вот где часть моего ответа PagedResultList вступает в игру. Либо так, либо вы могли бы иметь размер, равный
def size = Tasks.countByProject(project)
Таким образом, свойство тега g: paginate total будет точным.