The product catalogs on www.powersentry.com, www.newpoint.com,
www.zincklysbro.dk, and www.wilkinsonswordgarden.com all use
PaginatedList to provide the Page [1] 2 3 4 ... functionality.

I have a simple Action that looks like this:

        public ActionForward gotoPage(
                ActionMapping mapping,
                ActionForm form,
                HttpServletRequest request,
                HttpServletResponse response) 
        {
                DynaActionForm myForm = (DynaActionForm) form;
                // Get PRODUCT_INFO_KEY object from session
                PaginatedList products = (PaginatedList)
request.getSession().getAttribute(Constants.PRODUCT_LIST_KEY);
                
                if (products != null) {
                        try {
                                String page = (String) myForm.get("page");
                                if (page.equalsIgnoreCase("next")) {
                                        products.nextPage();
                                } else if (page.equalsIgnoreCase("previous")) {
                                        products.previousPage();
                                } else {
                                        int pageNum = new 
Integer(page).intValue();
                                
                                        products.gotoPage(pageNum);
                                }
                                
                                
request.setAttribute(Constants.PRODUCT_LIST_CURRENT_PAGE,new
Integer(products.getPageIndex()));
                                
                                return 
mapping.findForward("success.showCategory");
                                
                        } catch (NumberFormatException e) {
                                return mapping.findForward("browse");
                        } catch (RuntimeException e) {
                                return mapping.findForward("browse");
                        }
                } else {
                        return mapping.findForward("browse");
                }
        }

To make this work, when I do the initial query to populate the
PaginatedList, I do as you indicated - one query for the objects, one
query for the count. To hide this double-step, you could put that in
your DAO, if you're using one (I am not).

Brice


On Fri, 18 Mar 2005 12:12:31 +0100, Guido Garc�a Bernardo <[EMAIL PROTECTED]> 
wrote:
> Hi,
> 
> I am using ibatis PaginatedList functionality for paging through search 
> results,
> and I would like to add the ability for a user to go to the last page of the 
> results
> (something like Google results) instead of having to page through big result 
> sets as
> it is done in JPetStore4:
> 
>   <logic:notEqual name="orderBean" property="orderList.firstPage" 
> value="true" >
>     <a href="switchOrderPage.shtml?pageDirection=previous">PREV</a>
>   </logic:notEqual>
>   <logic:notEqual name="orderBean" property="orderList.lastPage" value="true" 
> >
>     <a href="switchOrderPage.shtml?pageDirection=next">NEXT</a>
>   </logic:notEqual>
> 
> Is this possible or should I do two queries (my actual "select fields from..."
> and a new "select count(*) from...") to achieve it?
> 
> Thank you very much,
> Guido.
> 
> --
> Guido Garc�a Bernardo - [EMAIL PROTECTED]
> Tfn. +34 983 54 89 08
> ITDEUSTO - Valladolid
> 
>

Reply via email to