I think that form renderer should be changed so that if a "navigation-form-name" attribute is specified the pagination calculation is not performet twice but only once. -Bruno
2008/12/24 Jacques Le Roux <jacques.le.r...@les7arts.com>: > Thanks Bruno, > > This will certainly help > > Jacques > > From: "Bruno Busco" <bruno.bu...@gmail.com> >> >> Hans, >> I have found the following that might help: >> >> If I change the FindInvoice screen like this: >> >> <screen name="FindInvoices"> >> <section> >> <actions> >> <set field="headerItem" value="invoices"/> >> <set field="titleProperty" value="PageTitleFindInvoice"/> >> <set field="tabButtonItem" value="invoices"/> >> <set field="viewIndex" >> from-field="parameters.VIEW_INDEX" type="Integer"/> >> <set field="viewSize" >> from-field="parameters.VIEW_SIZE" type="Integer" default-value="30"/> >> </actions> >> <widgets> >> <decorator-screen name="CommonInvoiceDecorator" >> location="${parameters.invoiceDecoratorLocation}"> >> <decorator-section name="body"> >> <include-menu name="InvoiceSubTabBar" >> location="component://accounting/widget/Menus.xml"/> >> <screenlet >> title="${uiLabelMap.PageTitleFindInvoice}"> >> <include-form name="FindInvoices" >> >> location="component://accounting/webapp/accounting/invoice/InvoiceForms.xml"/> >> </screenlet> >> <!-- >> <screenlet >> title="${uiLabelMap.PageTitleListInvoices}" >> navigation-form-name="ListInvoices"> >> --> >> <screenlet >> title="${uiLabelMap.PageTitleListInvoices}"> >> <include-form name="ListInvoices" >> >> location="component://accounting/webapp/accounting/invoice/InvoiceForms.xml"/> >> </screenlet> >> </decorator-section> >> </decorator-screen> >> </widgets> >> </section> >> </screen> >> >> Pagination works well. >> If I look in the debug.log file I find the following running the original >> code: >> 2008-12-24 10:49:18,859 (http-0.0.0.0-8443-1) [ >> ModelForm.java:1341:INFO ] preparePager: low - high = 1 - 2 >> 2008-12-24 10:49:18,859 (http-0.0.0.0-8443-1) [ >> ModelForm.java:1359:INFO ] preparePager: Found rows = 2 >> 2008-12-24 10:49:18,859 (http-0.0.0.0-8443-1) [ >> ModelForm.java:1341:INFO ] preparePager: low - high = 0 - 1 >> 2008-12-24 10:49:18,875 (http-0.0.0.0-8443-1) [ >> ModelForm.java:1359:INFO ] preparePager: Found rows = 1 >> >> and this with the code with my change: >> 2008-12-24 10:54:27,406 (http-0.0.0.0-8443-1) [ >> ModelForm.java:1341:INFO ] preparePager: low - high = 1 - 2 >> 2008-12-24 10:54:27,406 (http-0.0.0.0-8443-1) [ >> ModelForm.java:1359:INFO ] preparePager: Found rows = 2 >> >> So it seems to me that the multi-pagination does not work when we use >> the "navigation-form-name" attribute in a screenlet widget. >> In this case it seems that the pagination calculation runs twice and >> it fails to get the correct pagination index. >> >> So a quick fix is simply to not use the "navigation-form-name" >> attribute in the screenlet. >> May be this will help who better knows how the multi-pagination system >> works to fix it. >> >> -Bruno >> >> >> 2008/12/24 Hans Bakker <mailingl...@antwebsystems.com>: >>> >>> This commit (or later) causes pagination to stop working... >>> The page numbers change but the listing does not..... >>> >>> How to test? set the pagination in >>> framework/widget/config/widget.properties to "1" >>> >>> In the latest svn go to invoice click 'find' and try to paginate....the >>> invoiceId shown will not change. (although there are 3) >>> >>> then go back to r725022, remove the 2 statements containing >>> viewindex/viewsize from the findInvoiceScreen in invoicescreens.xml >>> >>> and see the problem have been solved..... >>> >>> Bruno or Jaques or somebody else...please have a look, i could not find >>> it that quickly.... >>> >>> Regards, >>> Hans >>> >>> >>> On Wed, 2008-12-10 at 10:39 +0000, jler...@apache.org wrote: >>>> >>>> Author: jleroux >>>> Date: Wed Dec 10 02:39:16 2008 >>>> New Revision: 725053 >>>> >>>> URL: http://svn.apache.org/viewvc?rev=725053&view=rev >>>> Log: >>>> A slightly modified patch from Bilgin Ibryam "Allow multi-pagination in >>>> a page" (https://issues.apache.org/jira/browse/OFBIZ-1935) - OFBIZ-1935 >>>> >>>> Modified: >>>> ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml >>>> ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml >>>> ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml >>>> ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml >>>> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java >>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java >>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java >>>> >>>> >>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java >>>> >>>> >>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java >>>> >>>> >>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java >>>> >>>> Modified: ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml?rev=725053&r1=725052&r2=725053&view=diff >>>> >>>> ============================================================================== >>>> --- ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml >>>> (original) >>>> +++ ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml Wed >>>> Dec 10 02:39:16 2008 >>>> @@ -1348,6 +1348,7 @@ >>>> <member-entity entity-alias="SI" entity-name="StatusItem"/> >>>> <alias-all entity-alias="QWE"/> >>>> <alias-all entity-alias="WE"/> >>>> + <!--alias name="statusId" field="statusId" entity-alias="SI"/--> >>>> <alias name="statusItemDescription" field="description" >>>> entity-alias="SI"/> >>>> <view-link entity-alias="QWE" rel-entity-alias="WE"> >>>> <key-map field-name="workEffortId"/> >>>> @@ -1361,6 +1362,9 @@ >>>> <relation type="one-nofk" rel-entity-name="Quote"> >>>> <key-map field-name="quoteId"/> >>>> </relation> >>>> + <relation type="one-nofk" rel-entity-name="StatusItem"> >>>> + <key-map field-name="statusId"/> >>>> + </relation> >>>> </view-entity> >>>> <view-entity entity-name="RequirementAndRole" >>>> package-name="org.ofbiz.order.request" >>>> >>>> Modified: >>>> ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml?rev=725053&r1=725052&r2=725053&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml >>>> (original) >>>> +++ >>>> ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml Wed >>>> Dec 10 02:39:16 2008 >>>> @@ -396,13 +396,13 @@ >>>> <request-map uri="createPartyAttribute"> >>>> <security https="true" auth="true"/> >>>> <event type="service" path="" invoke="createPartyAttribute"/> >>>> - <response name="success" type="view" >>>> value="EditPartyAttribute"/> >>>> + <response name="success" type="view" value="viewprofile"/> >>>> <response name="error" type="view" value="EditPartyAttribute"/> >>>> </request-map> >>>> <request-map uri="updatePartyAttribute"> >>>> <security https="true" auth="true"/> >>>> <event type="service" path="" invoke="updatePartyAttribute"/> >>>> - <response name="success" type="view" >>>> value="EditPartyAttribute"/> >>>> + <response name="success" type="view" value="viewprofile"/> >>>> <response name="error" type="view" value="EditPartyAttribute"/> >>>> </request-map> >>>> <request-map uri="removePartyAttribute"> >>>> >>>> Modified: >>>> ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml?rev=725053&r1=725052&r2=725053&view=diff >>>> >>>> ============================================================================== >>>> --- ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml >>>> (original) >>>> +++ ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml >>>> Wed Dec 10 02:39:16 2008 >>>> @@ -612,7 +612,8 @@ >>>> </form> >>>> >>>> <form name="ListCarrierAccounts" type="list" >>>> target="updatePartyCarrierAccount" >>>> - odd-row-style="alternate-row" default-table-style="basic-table >>>> hover-bar"> >>>> + odd-row-style="alternate-row" default-table-style="basic-table >>>> hover-bar" >>>> + paginate="true" view-size="3" paginate-target="viewprofile" >>>> paginate-target-anchor="ListCarrierAccounts"> >>>> <actions> >>>> <entity-condition entity-name="PartyCarrierAccount" >>>> list-name="carrierAccounts" filter-by-date="true"> >>>> <condition-expr field-name="partyId" >>>> env-name="parameters.partyId"></condition-expr> >>>> >>>> Modified: >>>> ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml?rev=725053&r1=725052&r2=725053&view=diff >>>> >>>> ============================================================================== >>>> --- ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml >>>> (original) >>>> +++ ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml >>>> Wed Dec 10 02:39:16 2008 >>>> @@ -270,7 +270,7 @@ >>>> <label style="h3" >>>> text="${uiLabelMap.PageTitleFinancialAccountSummary}"/> >>>> </container> >>>> <container style="screenlet-body"> >>>> - <iterate-section >>>> entry-name="ownedFinAccount" paginate="true" >>>> paginate-target="viewprofile?partyId=${parameters.partyId}" view-size="3" >>>> list-name="ownedFinAccountList"> >>>> + <iterate-section >>>> entry-name="ownedFinAccount" paginate="true" paginate-target="viewprofile" >>>> view-size="3" list-name="ownedFinAccountList"> >>>> <section> >>>> <actions> >>>> <entity-condition >>>> entity-name="FinAccountTrans" list-name="ownedFinAccountTransList"> >>>> >>>> Modified: >>>> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java?rev=725053&r1=725052&r2=725053&view=diff >>>> >>>> ============================================================================== >>>> --- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java >>>> (original) >>>> +++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java Wed >>>> Dec 10 02:39:16 2008 >>>> @@ -919,11 +919,18 @@ >>>> } >>>> >>>> public static String stripViewParamsFromQueryString(String >>>> queryString) { >>>> + return stripViewParamsFromQueryString(queryString, null); >>>> + } >>>> + >>>> + public static String stripViewParamsFromQueryString(String >>>> queryString, String paginatorNumber) { >>>> Set<String> paramNames = new HashSet<String>(); >>>> - paramNames.add("VIEW_INDEX"); >>>> - paramNames.add("VIEW_SIZE"); >>>> - paramNames.add("viewIndex"); >>>> - paramNames.add("viewSize"); >>>> + if (UtilValidate.isNotEmpty(paginatorNumber)) { >>>> + paginatorNumber = "_" + paginatorNumber; >>>> + } >>>> + paramNames.add("VIEW_INDEX" + paginatorNumber); >>>> + paramNames.add("VIEW_SIZE" + paginatorNumber); >>>> + paramNames.add("viewIndex" + paginatorNumber); >>>> + paramNames.add("viewSize" + paginatorNumber); >>>> return stripNamedParamsFromQueryString(queryString, paramNames); >>>> } >>>> >>>> >>>> Modified: >>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java?rev=725053&r1=725052&r2=725053&view=diff >>>> >>>> ============================================================================== >>>> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java >>>> (original) >>>> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java >>>> Wed Dec 10 02:39:16 2008 >>>> @@ -112,4 +112,27 @@ >>>> } >>>> return result; >>>> } >>>> + >>>> + public int getPaginatorNumber(Map<String, Object> context) { >>>> + int paginator_number = 0; >>>> + Map<String, Object> globalCtx = >>>> UtilGenerics.checkMap(context.get("globalContext")); >>>> + if (globalCtx != null) { >>>> + Integer paginateNumberInt= >>>> (Integer)globalCtx.get("PAGINATOR_NUMBER"); >>>> + if (paginateNumberInt == null) { >>>> + paginateNumberInt = Integer.valueOf(0); >>>> + globalCtx.put("PAGINATOR_NUMBER", paginateNumberInt); >>>> + } >>>> + paginator_number = paginateNumberInt.intValue(); >>>> + } >>>> + return paginator_number; >>>> + } >>>> + >>>> + public void incrementPaginatorNumber(Map<String, Object> context) { >>>> + Map<String, Object> globalCtx = >>>> UtilGenerics.checkMap(context.get("globalContext")); >>>> + if (globalCtx != null) { >>>> + Integer paginateNumberInt = >>>> Integer.valueOf(getPaginatorNumber(context) + 1); >>>> + globalCtx.put("PAGINATOR_NUMBER", paginateNumberInt); >>>> + } >>>> + } >>>> + >>>> } >>>> >>>> Modified: >>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java?rev=725053&r1=725052&r2=725053&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java >>>> (original) >>>> +++ >>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java Wed >>>> Dec 10 02:39:16 2008 >>>> @@ -1306,6 +1306,9 @@ >>>> } >>>> >>>> public void preparePager(Map<String, Object> context) { >>>> + >>>> + // increment the paginator >>>> + this.incrementPaginatorNumber(context); >>>> this.rowCount = 0; >>>> String lookupName = this.getListName(); >>>> if (UtilValidate.isEmpty(lookupName)) { >>>> @@ -2185,6 +2188,8 @@ >>>> if (UtilValidate.isEmpty(field)) { >>>> field = DEFAULT_PAG_INDEX_FIELD; >>>> } >>>> + // append the paginator number >>>> + field = field + "_" + getPaginatorNumber(context); >>>> return field; >>>> } >>>> >>>> @@ -2199,7 +2204,7 @@ >>>> // try parameters.VIEW_INDEX as that is an old OFBiz >>>> convention >>>> Map parameters = (Map) context.get("parameters"); >>>> if (parameters != null) { >>>> - value = parameters.get("VIEW_INDEX"); >>>> + value = parameters.get("VIEW_INDEX" + "_" + >>>> getPaginatorNumber(context)); >>>> >>>> if (value == null) { >>>> value = parameters.get(field); >>>> @@ -2224,6 +2229,8 @@ >>>> if (UtilValidate.isEmpty(field)) { >>>> field = DEFAULT_PAG_SIZE_FIELD; >>>> } >>>> + // append the paginator number >>>> + field = field + "_" + getPaginatorNumber(context); >>>> return field; >>>> } >>>> >>>> @@ -2238,7 +2245,7 @@ >>>> // try parameters.VIEW_SIZE as that is an old OFBiz >>>> convention >>>> Map parameters = (Map) context.get("parameters"); >>>> if (parameters != null) { >>>> - value = parameters.get("VIEW_SIZE"); >>>> + value = parameters.get("VIEW_SIZE" + "_" + >>>> getPaginatorNumber(context)); >>>> >>>> if (value == null) { >>>> value = parameters.get(field); >>>> >>>> Modified: >>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java?rev=725053&r1=725052&r2=725053&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java >>>> (original) >>>> +++ >>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java >>>> Wed Dec 10 02:39:16 2008 >>>> @@ -2245,6 +2245,7 @@ >>>> } >>>> >>>> // get the parametrized pagination index and size fields >>>> + int paginatorNumber = modelForm.getPaginatorNumber(context); >>>> String viewIndexParam = >>>> modelForm.getPaginateIndexField(context); >>>> String viewSizeParam = modelForm.getPaginateSizeField(context); >>>> >>>> @@ -2272,13 +2273,13 @@ >>>> } >>>> >>>> // for legacy support, the viewSizeParam is VIEW_SIZE and >>>> viewIndexParam is VIEW_INDEX when the fields are "viewSize" and "viewIndex" >>>> - if (viewIndexParam.equals("viewIndex")) viewIndexParam = >>>> "VIEW_INDEX"; >>>> - if (viewSizeParam.equals("viewSize")) viewSizeParam = >>>> "VIEW_SIZE"; >>>> + if (viewIndexParam.equals("viewIndex" + "_" + paginatorNumber)) >>>> viewIndexParam = "VIEW_INDEX" + "_" + paginatorNumber; >>>> + if (viewSizeParam.equals("viewSize" + "_" + paginatorNumber)) >>>> viewSizeParam = "VIEW_SIZE" + "_" + paginatorNumber; >>>> >>>> String str = (String) context.get("_QBESTRING_"); >>>> >>>> // strip legacy viewIndex/viewSize params from the query string >>>> - String queryString = >>>> UtilHttp.stripViewParamsFromQueryString(str); >>>> + String queryString = >>>> UtilHttp.stripViewParamsFromQueryString(str, "" + paginatorNumber); >>>> >>>> // strip parametrized index/size params from the query string >>>> HashSet<String> paramNames = new HashSet<String>(); >>>> >>>> Modified: >>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java?rev=725053&r1=725052&r2=725053&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java >>>> (original) >>>> +++ >>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java >>>> Wed Dec 10 02:39:16 2008 >>>> @@ -246,6 +246,7 @@ >>>> } >>>> >>>> // get the parametrized pagination index and size fields >>>> + int paginatoNumber = modelForm.getPaginatorNumber(context); >>>> String viewIndexParam = >>>> modelForm.getPaginateIndexField(context); >>>> String viewSizeParam = modelForm.getPaginateSizeField(context); >>>> >>>> @@ -271,8 +272,8 @@ >>>> } >>>> >>>> // for legacy support, the viewSizeParam is VIEW_SIZE and >>>> viewIndexParam is VIEW_INDEX when the fields are "viewSize" and "viewIndex" >>>> - if (viewIndexParam.equals("viewIndex")) viewIndexParam = >>>> "VIEW_INDEX"; >>>> - if (viewSizeParam.equals("viewSize")) viewSizeParam = >>>> "VIEW_SIZE"; >>>> + if (viewIndexParam.equals("viewIndex" + "_" + paginatoNumber)) >>>> viewIndexParam = "VIEW_INDEX" + "_" + paginatoNumber; >>>> + if (viewSizeParam.equals("viewSize" + "_" + paginatoNumber)) >>>> viewSizeParam = "VIEW_SIZE" + "_" + paginatoNumber; >>>> >>>> ServletContext ctx = (ServletContext) >>>> request.getAttribute("servletContext"); >>>> RequestHandler rh = (RequestHandler) >>>> ctx.getAttribute("_REQUEST_HANDLER_"); >>>> @@ -284,7 +285,7 @@ >>>> } >>>> String queryString = UtilHttp.urlEncodeArgs(inputFields); >>>> // strip legacy viewIndex/viewSize params from the query string >>>> - queryString = >>>> UtilHttp.stripViewParamsFromQueryString(queryString); >>>> + queryString = >>>> UtilHttp.stripViewParamsFromQueryString(queryString, "" + paginatoNumber); >>>> // strip parametrized index/size params from the query string >>>> HashSet<String> paramNames = new HashSet<String>(); >>>> paramNames.add(viewIndexParam); >>>> >>>> Modified: >>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java?rev=725053&r1=725052&r2=725053&view=diff >>>> >>>> ============================================================================== >>>> --- >>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java >>>> (original) >>>> +++ >>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java >>>> Wed Dec 10 02:39:16 2008 >>>> @@ -21,6 +21,7 @@ >>>> import java.io.IOException; >>>> import java.util.ArrayList; >>>> import java.util.Arrays; >>>> +import java.util.HashSet; >>>> import java.util.Iterator; >>>> import java.util.List; >>>> import java.util.Locale; >>>> @@ -33,6 +34,8 @@ >>>> >>>> import org.ofbiz.base.util.Debug; >>>> import org.ofbiz.base.util.GeneralException; >>>> +import org.ofbiz.base.util.UtilGenerics; >>>> +import org.ofbiz.base.util.UtilHttp; >>>> import org.ofbiz.base.util.UtilMisc; >>>> import org.ofbiz.base.util.UtilProperties; >>>> import org.ofbiz.base.util.UtilValidate; >>>> @@ -114,6 +117,8 @@ >>>> Debug.logError("Object not list or map type", module); >>>> return; >>>> } >>>> + this.incrementPaginatorNumber(context); >>>> + int startPageNumber = this.getPaginatorNumber(context); >>>> getListLimits(context, theList); >>>> int rowCount = 0; >>>> Iterator iter = theList.iterator(); >>>> @@ -140,19 +145,31 @@ >>>> section.renderWidgetString(writer, contextMs, >>>> screenStringRenderer); >>>> } >>>> } >>>> + >>>> if ((itemIndex + 1) < highIndex) { >>>> setHighIndex(itemIndex + 1); >>>> } >>>> setActualPageSize(highIndex - lowIndex); >>>> if (paginate) { >>>> try { >>>> + Integer lastPageNumber = null; >>>> + Map<String, Object> globalCtx = >>>> UtilGenerics.checkMap(context.get("globalContext")); >>>> + if (globalCtx != null) { >>>> + lastPageNumber = >>>> (Integer)globalCtx.get("PAGINATOR_NUMBER"); >>>> + globalCtx.put("PAGINATOR_NUMBER", >>>> Integer.valueOf(startPageNumber)); >>>> + } >>>> + >>>> renderNextPrev(writer, context); >>>> + >>>> + if (globalCtx != null) { >>>> + globalCtx.put("PAGINATOR_NUMBER", lastPageNumber); >>>> + } >>>> } catch(IOException e) { >>>> Debug.logError(e, module); >>>> throw new RuntimeException(e.getMessage()); >>>> } >>>> } >>>> - >>>> + >>>> } >>>> /* >>>> * @return >>>> @@ -230,8 +247,10 @@ >>>> if (paginate) { >>>> try { >>>> Map params = (Map)context.get("parameters"); >>>> - String viewIndexString = (String) >>>> params.get("VIEW_INDEX"); >>>> + String viewIndexString = (String) >>>> params.get("VIEW_INDEX" + "_" + getPaginatorNumber(context)); >>>> + String viewSizeString = (String) params.get("VIEW_SIZE" >>>> + "_" + getPaginatorNumber(context)); >>>> viewIndex = Integer.parseInt(viewIndexString); >>>> + viewSize = Integer.parseInt(viewSizeString); >>>> } catch (Exception e) { >>>> try { >>>> viewIndex = ((Integer) >>>> context.get("viewIndex")).intValue(); >>>> @@ -240,16 +259,9 @@ >>>> } >>>> } >>>> context.put("viewIndex", Integer.valueOf(this.viewIndex)); >>>> - >>>> - try { >>>> - viewSize = ((Integer) >>>> context.get("viewSize")).intValue(); >>>> - } catch (Exception e) { >>>> - //viewSize = DEFAULT_PAGE_SIZE; >>>> - } >>>> + >>>> lowIndex = viewIndex * viewSize; >>>> highIndex = (viewIndex + 1) * viewSize; >>>> - >>>> - >>>> } else { >>>> viewIndex = 0; >>>> viewSize = DEFAULT_PAGE_SIZE; >>>> @@ -265,6 +277,19 @@ >>>> targetService = "${targetService}"; >>>> } >>>> >>>> + Map<String, Object> inputFields = >>>> UtilGenerics.checkMap(context.get("requestParameters")); >>>> + Map<String, Object> queryStringMap = >>>> UtilGenerics.toMap(context.get("queryStringMap")); >>>> + if (UtilValidate.isNotEmpty(queryStringMap)) { >>>> + inputFields.putAll(queryStringMap); >>>> + } >>>> + >>>> + String queryString = UtilHttp.urlEncodeArgs(inputFields); >>>> + int paginatorNumber = this.getPaginatorNumber(context); >>>> + queryString = >>>> UtilHttp.stripViewParamsFromQueryString(queryString, "" + paginatorNumber); >>>> + >>>> + >>>> + >>>> + >>>> if (UtilValidate.isEmpty(targetService)) { >>>> Debug.logWarning("TargetService is empty.", module); >>>> return; >>>> @@ -331,7 +356,10 @@ >>>> if (linkText.indexOf("?") < 0) linkText.append("?"); >>>> else linkText.append("&"); >>>> //if (queryString != null && !queryString.equals("null")) >>>> linkText += queryString + "&"; >>>> - >>>> >>>> linkText.append("VIEW_SIZE=").append(viewSize).append("&VIEW_INDEX=").append(viewIndex >>>> - 1).append("\""); >>>> + if (UtilValidate.isNotEmpty(queryString)) { >>>> + linkText.append(queryString).append("&"); >>>> + } >>>> + linkText.append("VIEW_SIZE_"+ paginatorNumber + >>>> "=").append(viewSize).append("&VIEW_INDEX_" + paginatorNumber + >>>> "=").append(viewIndex - 1).append("\""); >>>> >>>> // make the link >>>> writer.append(rh.makeLink(request, response, >>>> linkText.toString(), false, false, false)); >>>> @@ -349,7 +377,10 @@ >>>> StringBuilder linkText = new StringBuilder(targetService); >>>> if (linkText.indexOf("?") < 0) linkText.append("?"); >>>> else linkText.append("&"); >>>> - >>>> >>>> linkText.append("VIEW_SIZE=").append(viewSize).append("&VIEW_INDEX=").append(viewIndex >>>> + 1).append("\""); >>>> + if (UtilValidate.isNotEmpty(queryString)) { >>>> + linkText.append(queryString).append("&"); >>>> + } >>>> + linkText.append("VIEW_SIZE_" + paginatorNumber + >>>> "=").append(viewSize).append("&VIEW_INDEX_" + paginatorNumber + >>>> "=").append(viewIndex + 1).append("\""); >>>> >>>> // make the link >>>> writer.append(rh.makeLink(request, response, >>>> linkText.toString(), false, false, false)); >>>> >>>> >>> -- >>> Antwebsystems.com: Quality OFBiz services for competitive prices >>> >>> >> > >