Feature Requests item #1013526, was opened at 2004-08-21 20:23
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=536616&aid=1013526&group_id=73068
Category: main taglib
Group: after 1.0
Status: Open
Resolution: None
Priority: 5
Submitted By: Will Glass-Husain (wglass)
Assigned to: Nobody/Anonymous (nobody)
Summary: Increase efficiency paging using a subset (alternate impl)
Initial Comment:
[This really belongs in issue#872183 but I couldn't figure
out how to add another file to the issue.]
The dilemma - how to efficiently display a large list (e.g.
20,000 rows) one page at a time. Currently, to take
advantage of DisplayTag's paging features, you must
generate the entire list each request.
This patch allows the application to control the
selection of the specific sublist, with DisplayTag
automatically generating the PREV/NEXT links as usual.
For an MVC environment pulling large lists out of a
database this can be used to implement significant
performance improvements.
There's already a patch solving the same problem in the
issue tracker (#872183), but I've made an alternate
implementation (not having seen the first proposal at
the time). This particular patch may be easier to
integrate than the previous one (being based on a more
recent version of DisplayTag). It is fully backwards
compatible, works with EL tags, and is configurable with
DisplayTag properties rather than any new attributes.
Using it is not too complicated, although it requires
coordination between the Controller code and the JSP
page. There are two new DisplayTag properties:
paging.manual (true/false, default: false)
paging.manual.prefix (default "d")
In order to produce a table, the controller must
generate the sublist, calculate the size of the full list,
and pass both pieces of info to DisplayTag. (both are
required for paging). The size of the full list is passed
by setting a pageContext attribute with the name of "d-
size". (or X-size, if X is the prefix specified with
the "paging.manual.prefix" property). DisplayTag will
display the sublist amd will also generate page hyperlinks
for the full list. Each hyperlink will contain a request
parameter "d-p", e.g. "d-p=2". (This is similar to the
standard page parameter which is typically something
like "d-2911-p=2"). When the hyperlink is clicked, the
controller should note the new page number and send
along a new sublist.
Example pseudo code:
CONTROLLER:
int pagesize = 10;
int fulllistsize = <count the size of the full list>
List sublist = <generate sublist for the particular page,
based on a page size of 10>
pageContext.setAttribute("list",sublist);
pageContext.setAttribute("d-size",fulllistsize);
JSP PAGE:
<display:table name="${list}" pagesize="10">
<display:setProperty name="paging.manual"
value="false" />
.. all the display columns
</display:table>
A key issue the patch had to address is how to
distinguish one TableTag from another if there are
multiple instances on the same page. This is normally
done with an automatically generated id. In this case
however, since the request parameters must be
recognized by the controller to generate the sublist, the
id is skipped and the prefix (specified in the properties)
is used instead. Thus it is up to the page designer to
use different prefixes for different DisplayTag tables on
the same page.
I'd welcome any comments.
Note: this patch was made against nightly build of 8-16-
04, 1.0-rc2 SNAPSHOT.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=536616&aid=1013526&group_id=73068
-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
displaytag-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/displaytag-devel