Пейджинг с номерами страниц в файле JSP, а не URL
Я использую пружинный фреймворк для моей формы. Я тестирую инфраструктуру подкачки здесь: http://www.developer.com/java/web/article.php/10935_3830886_3/A-Pagination-Technique-Using-Spring.htm. URL для моей формы отображает номера страниц следующим образом:
1-я страница: http:/mySite/paging/paging/02-я страница: http:/paging.do?action=list&p=13-я страница: http:/paging.do?action=list&p=2 т. д.
Пейджинг не согласован и вызывает проблемы в моем коде (обратите внимание на разницу между первым pg и вторым pg url), и чтобы сохранить мой URL чистым, я предпочитаю хранить номера страниц как скрытый параметр jsp. Является ли это возможным? Есть ли у вас какие-либо рекомендации? Благодарю.
Мой контроллер:
@Controller
@RequestMapping(value="/paging")
@ApplicationComponent(component="Paging")
public class PaginationController
{
private final Log logger = LogFactory.getLog(getClass());
@Autowired
private ItemDao itemDao;
@RequestMapping(value="/paging/{p}")
public ModelAndView list(@PathVariable("p") int page) throws Exception
{
ModelAndView mav = new ModelAndView("paging/paging");
System.out.println("In the paging controller");
// get data in a list from jsp
List searchResults = itemDao.getAllItems();
// initialize PagedListHolder with the list,
PagedListHolder pagedListHolder = new PagedListHolder(searchResults);
pagedListHolder.setPage(page);
int pageSize = 5;
pagedListHolder.setPageSize(pageSize);
mav.addObject("pagedListHolder", pagedListHolder);
return mav;
}
}
Вот JSP:
<jsp:useBean id="pagedListHolder" scope="request" type="org.springframework.beans.support.PagedListHolder"/>
<%-- // create link for pages, "~" will be replaced with the proper page number --%>
<c:url value="/paging.do" var="pagedLink">
<c:param name="action" value="list"/>
<c:param name="p" value="~"/>
</c:url>
<tg:paging pagedListHolder="${pagedListHolder}" pagedLink="${pagedLink}"/>
<%-- // show only current page data --%>
<table width="200px" border="1">
<tr>
<th width="20px">No.</th>
<th>Print Items from pagedListHolder list</th>
</tr>
<c:forEach items="${pagedListHolder.pageList}" var="item">
<tr>
<td>${item.key}</td>
<td style="color:blue;font-weight:bold;text-align:right">${item.data}</td>
</tr>
</c:forEach>