warning about my absolute jumping example:
(Sorry I am so chatty this week, but:)
My example only makes sense if you also have the next
and previous links available as I did (but failed to
mention previously).
-Brett
--- Brett Gorres <[EMAIL PROTECTED]> wrote:
> Leonardo:
>
> I succeeeded using only 1 query with PaginatedList.
>
> Btw unless I'm mistaken PaginatedList is tightly
> coupled to iBATIS but that's a sacrifice of
> portability one can make for the sake of convenient
> paging. If you switch from iBATIS, yes you can
> revisit this dependency and insert different code
> for
> that.
>
> For this example code: I had decided at the last
> minute to add a "jumping" feature to an intranet
> search results page that may be similar to what you
> need.
>
> It is aware of only 5 possible fixed jumps.
>
> I allowed specific jumps within results, like so:
> <First> | <25%> | <Middle> | <75%> | <Last>
>
> The JSP knows when to enable or disable the first /
> last links. I know I added 25%, middle and 75% to
> what was done in JPetStore, among other things. I
> don't remember how much of this overlaps with that
> example.
>
> Brice's parameterized approach may make more sense,
> depending on what you need. (I wanted fixed
> navigation options. I think Brice and JPetStore are
> both using a more relative approach.)
>
> This worked for me with a ton of search
> results--YMMV.
> If you do have only a few results, maybe the
> arithmetic could be made to be more precise.
>
>
> (Snippets from my Action and some Struts/JSP example
> code pasted in below):
>
>
> // Any feedback on this is appreciated! -Brett
> Gorres
> // www.clevergreen.net
> public String doPreviousPage()
> {
> if (this.getPaginatedPatientList() != null
> &&
>
this.getPaginatedPatientList().isPreviousPageAvailable())
> {
>
> this.paginatedPatientList.previousPage();
> return "success";
> }
> else
> {
>
> ActionContext.getActionContext().addSimpleError(
> "There were no previous results to
> display.");
> return "failure";
> }
> }
>
> public String doNextPage()
> {
> if (this.getPaginatedPatientList() != null
> &&
>
this.getPaginatedPatientList().isNextPageAvailable())
> {
>
> this.getPaginatedPatientList().nextPage();
> return "success";
> }
> else
> {
>
> ActionContext.getActionContext().addSimpleError(
> "There were no more results to
> display.");
> return "failure";
> }
> }
>
> public String doFirstPage()
> {
> if (this.getPaginatedPatientList() != null)
> {
>
> this.getPaginatedPatientList().gotoPage(0);
> return "success";
> }
> else
> {
>
> ActionContext.getActionContext().addSimpleError(
> "Unable to change pages as
> requested.");
> return "failure";
> }
> }
>
> public String doLastPage()
> {
> if (this.getPaginatedPatientList() != null)
> {
>
>
this.getPaginatedPatientList().gotoPage(_countPages());
> return "success";
> }
> else
> {
>
> ActionContext.getActionContext().addSimpleError(
> "Unable to change pages as
> requested.");
> return "failure";
> }
> }
>
> public String doJump25Percent()
> {
> if (this.getPaginatedPatientList() != null)
> {
>
>
this.getPaginatedPatientList().gotoPage(_countPages()
> / 4);
> return "success";
> }
> else
> {
>
> ActionContext.getActionContext().addSimpleError(
> "Unable to change pages as
> requested.");
> return "failure";
> }
> }
>
> public String doJump50Percent()
> {
> if (this.getPaginatedPatientList() != null)
> {
>
>
this.getPaginatedPatientList().gotoPage(_countPages()
> / 2);
> return "success";
> }
> else
> {
>
> ActionContext.getActionContext().addSimpleError(
> "Unable to change pages as
> requested.");
> return "failure";
> }
> }
>
> public String doJump75Percent()
> {
> if (this.getPaginatedPatientList() != null)
> {
>
> this.getPaginatedPatientList().gotoPage(3
> * _countPages() / 4);
> return "success";
> }
> else
> {
>
> ActionContext.getActionContext().addSimpleError(
> "Unable to change pages as
> requested.");
> return "failure";
> }
> }
>
> private int _countPages()
> {
> int pageCount = 0;
> if (this.getPaginatedPatientList() != null
> && this.countMatchingResults != null
> && this.countMatchingResults.intValue()
> >
> 0)
> {
> pageCount =
> this.countMatchingResults.intValue()
> /
> AppConstantsInHere.PAGINATED_LIST_PAGE_SIZE;
> }
> return pageCount;
> }
>
>
> ---------------------------------------
> Using Struts/iBATIS PaginatedList
> for absolute result Navigation in HTML:
> ---------------------------------------
>
=== message truncated ===