Прикрутил к простому CRUD приложению пейджинг следующим образом:
В users.jsp:
<div id="pagination">
<c:url value="/users" var="prev">
<c:param name="page" value="${page-1}"/>
</c:url>
<c:if test="${page > 1}">
<a href="<c:out value="${prev}" />" class="pn prev">Prev</a>
</c:if>
<c:forEach begin="1" end="${maxPages}" step="1" varStatus="i">
<c:choose>
<c:when test="${page == i.index}">
<span>${i.index}</span>
</c:when>
<c:otherwise>
<c:url value="/users" var="url">
<c:param name="page" value="${i.index}"/>
</c:url>
<a href='<c:out value="${url}" />'>${i.index}</a>
</c:otherwise>
</c:choose>
</c:forEach>
<c:url value="/users" var="next">
<c:param name="page" value="${page + 1}"/>
</c:url>
<c:if test="${page + 1 <= maxPages}">
<a href='<c:out value="${next}" />' class="pn next">Next</a>
</c:if>
На этой же странице кроме списка юзеров есть форма для их добавления/правки, ну и в таблице юзеров кнопки для каждой позиции:
<td><a href="<c:url value='/edit/${user.id}'/>">Edit</a></td>
<td><a href="<c:url value='/remove/${user.id}'/>">Delete</a></td>
В контроллере:
@RequestMapping(value = "users", method = RequestMethod.GET) public ModelAndView listUsers(@RequestParam(required = false) Integer page) { ModelAndView modelAndView = new ModelAndView("users");
List<User> users = userService.listUsers();
PagedListHolder<User> pagedListHolder = new PagedListHolder<User>(users);
pagedListHolder.setPageSize(pageSize);
modelAndView.addObject("maxPages", pagedListHolder.getPageCount());
if(page==null || page < 1 || page > pagedListHolder.getPageCount())
page=1;
modelAndView.addObject("page", page);
if(page == null || page < 1 || page > pagedListHolder.getPageCount()){
pagedListHolder.setPage(0);
modelAndView.addObject("listUsers", pagedListHolder.getPageList());
}
else if(page <= pagedListHolder.getPageCount()) {
pagedListHolder.setPage(page-1);
modelAndView.addObject("listUsers", pagedListHolder.getPageList());
}
modelAndView.addObject("user", new User());
return modelAndView;}
На этом этапе все работает, список разбит на страницы, навигация работает, НО находясь например на 2ой странице удаляем юзера
@RequestMapping(value = "/remove/{id}")
public String removeUser(@PathVariable("id") int id) {
this.userService.removeUser(id);
return "redirect:/users";
}
удаление проходит успешно, но отображение списка юзеров сбрасывается на 1ую страницу. То же самое и с операциями добавления/правки. Понятно, ведь в каждом случае
return "redirect:/users";
без параметра запроса с номером страницы.
Я пока еще не силен ни в JSP, ни в Spring. Подскажите, как этот параметр можно передавать и оперировать им в контроллере?
Спасибо!
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Не нашел нужного метода по реализации вращения объекта за курсором мышиПытался сам реализовать это, но в связи с неопытностью, этого сделать...