разбить список на страницы - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть служба, которая возвращает список объектов класса домена контроллеру. Я ищу что-то, чтобы взять параметры разбивки на страницы и разбить на страницы этот список, как MyDomain.list(params). Есть предложения?

Ответы [ 2 ]

4 голосов
/ 21 ноября 2011

Передайте параметры пагинации в ваш метод обслуживания. Если вы выполните разбиение на страницы после извлечения объектов из базы данных (в вашем случае в контроллере), ваш запрос все равно вернет много ненужных вам объектов, и это может стать проблемой производительности.

В противном случае, если вы все еще хотите иметь нумерацию страниц без функций gorm, то вы можете просто нарезать свой список, т.е. def sliceList = list[5..10]

2 голосов
/ 21 ноября 2011

Вы хотите, чтобы разбиение на страницы происходило в вашем контроллере или в вашем сервисе?

Если вы хотите разбить на страницы в контроллере, это легко сделать:

def myList = service.listItems()
if (params.sort) 
    myList = myList.sort {it."${params.sort}"}
if (params.order == "desc") 
    myList = myList.reverse()
int from = params.offset ?: 0
int to = from + (params.max ?: DEFAULT_SIZE)
myList = myList.subList(from, to)

Если вы хотите разбить на страницы в службе (например, чтобы не приходилось каждый раз получать все строки из службы), вам придется переместить туда логику разбиения на страницы. Как бы вы это реализовали, зависит от того, что делает сервис; если он извлекает данные с помощью операторов SQL, вы должны преобразовать параметры пагинации в такие директивы, как «limit» и «order by» и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...