Как сделать пагинацию с помощью Freemarker и Spring?

У меня есть шаблон Freemarker, отображающий список вещей, теперь я хочу добавить разбиение на страницы.

Я изменил код на стороне сервера, чтобы я мог указать в резервной форме номер страницы (по умолчанию 1) и размер страницы (по умолчанию 20) вместе с кучей параметров запроса. Контроллер обработает это правильно и вернет список вещей, номер страницы и номер последней страницы в модели.

Но чего я не знаю (поскольку я раньше не делал много вещей для веб-слоев), так это того, что делать в шаблоне, чтобы пользователь мог щелкнуть следующую/предыдущую/страницу-3 и т. д.

На данный момент в шаблоне есть:

<button type="submit" id="searchButton">Search</button>

Я думаю, я мог бы добавить кнопки для каждого из действий, но как я мог бы тогда определить в контроллере, какая кнопка была нажата?

Ура Пол


person Paul McKenzie    schedule 07.10.2011    source источник


Ответы (1)


Вы можете добавить событие onClick к кнопкам (или A HREF ссылкам) в свой шаблон, связанное с фрагментом Javascript, который устанавливает значение для скрытого элемента на странице. Этот элемент (скажем, ACTION) будет содержать значение кнопки, которую вы нажали (NEXT или PREVIOUS), чтобы на стороне сервера контроллер мог выполнять правильные действия в соответствии со значением ACTION.

form.elements["ACTION"].value = 'NEXT'

Или это также может быть элемент PAGE, который содержит целевой номер страницы (если вы хотите разрешить прямые ссылки на все страницы)

Итак, если вы сейчас находитесь на странице 4:

form.elements["PAGE"].value = '5' // for the 'NEXT' button
form.elements["PAGE"].value = '3' // for the 'PREVIOUS' button
person Guillaume    schedule 07.10.2011
comment
Это работает: ‹a onclick=requestedPage.value=1;queryForm.submit()›page1‹/a› - person Paul McKenzie; 07.10.2011