Thanks for your response, it was something that I thougth, I have to 
pass to the form the information that the user is paginating. But i 
can't find documentation on how to pass attributes to the form when it's 
for paginating and sorting, or if there are specials attributes which 
indicates that's the user make a sort or go to next pagnined page.

Also how can I pass a such information only for paginating and sorting? 
I mean how to add attributes to the form ? because I tried to make a 
such thing : form="${namespace}AddAud?navigate=true" at the place of 
form="${namespace}AddAud", but it doesn't pass the attribute correctly 
and the form isn't more recognized...

Thanks

Julien


Paslaru Narcis a écrit :
> Hi,
>
> I don't know spring binding, but I think you should try and make a 
> difference between the pagination (the submitting of the form when 
> paginating and sorting) and the submiting using the other buttons 
> (search, cancel) - maybe using a "DispatchAction".
> One method for search and another one when paginating (making the same 
> seach, with the initial parameters).
> The form has to be submitted when pagination occurs so it can retrieve 
> the checked checkboxes.
>
> Cheers,
> Narcis
>
> On Fri, Nov 13, 2009 at 10:55 AM, Julien Gribonvald 
> <julien.gribonv...@recia.fr <mailto:julien.gribonv...@recia.fr>> wrote:
>
>     Hi,
>
>     Nobody can help me ?  I will try a better explaination ! (sorry for my
>     english)
>
>     I'm facing to some problems with displaytag lib and with
>     pagination and
>     ordering options of datatable.
>
>     My problem is that i have a search result where the user can select
>     multi results on pagined and sorted pages if he wants, and the problem
>     is when the user make a sort or go on an other page, he loose his
>     selection.
>
>     On the doc of displaytag and with the exemples it says that i need to
>     set the form option in <display:table ... form="...."> to save the
>     selection better sorts and pages. I'm trying to do that, but it
>     doesn't
>     work and it's submiting the form each time that the user make a
>     sort or
>     go to next pagnied page ( I have a validator which return an error
>     about
>     selected values, validator called after submit normaly)... when i
>     remove
>     the form i can navigate on all pagined pages and i can make all sorts,
>     but with the form I stay on the first page and i can't make any sort.
>     Also with the form option the buttons (next, previous, cancel...)
>     doesn't works correctly
>
>     It make some days that I'm trying to solve that but without
>     success, any
>     help would be appreciate.
>
>     Else here is a part of my form :
>
>     [CODE]
>     <spring:nestedPath
>        path="subForm">
>        <portlet:actionURL var="submitAudience">
>            <portlet:param name="action" value="addAudience" />
>            <portlet:param name="_page" value="${page}" />
>        </portlet:actionURL>
>        <form name="${namespace}AddAud" method="post"
>            action="${submitAudience }">
>
>     ....
>     <spring:bind path="subKey">
>     <table border=0 cellpadding=5 width="90%">
>        <tr>
>            <td><d:table name="${userList}" id="user" sort="list"
>     requestURI="${submitAudience}" form="${namespace}AddAud"
>                    export="false" class="dataTable" defaultsort="2"
>     defaultorder="ascending" cellspacing="1"
>                    pagesize="${nbItemsToShow}"
>      decorator="org.displaytag.decorator.TotalTableDecorator">
>
>                    <d:column title="Select">
>                        <input type="checkbox" name="${status.expression}"
>        value="${user.userId}" />
>                    </d:column>
>
>                    <c:forEach items="${attrDisplay}" var="displayAttr">
>                        <d:column titleKey="news.label.${displayAttr}"
>     sortable="true" headerClass="sortable">
>                            <c:forEach
>     items="${user.attributes[displayAttr]}"
>                            var="attrValue">
>                                <c:out value="${attrValue}" />
>                            </c:forEach>
>                        </d:column>
>                    </c:forEach>
>
>
>                    <d:setProperty name="paging.banner.item_name"
>                        value="${tit}" />
>                    <d:setProperty name="paging.banner.items_name"
>                        value="${tit}s" />
>
>                </d:table></td>
>            </tr>
>            <tr>
>                <td><span
>     class="portlet-msg-error">${status.errorMessage}</span></td>
>            </tr>
>        </table>
>        </spring:bind>[/CODE]
>
>     Subkey is a table of string a property of subForm.
>
>
>     and here is my controller :
>
>     [CODE]
>
>     public class SubcribeController extends AbstractWizardFormController {
>
>       ...
>
>        public SubcribeController() {
>            setCommandClass(SubForm.class);
>            setCommandName(Constants.CMD_SUB_F);
>            setAllowDirtyBack(true);
>            setAllowDirtyForward(false);
>            setSessionForm(true);
>            setPageAttribute(Constants.ATT_PAGE);
>            setPages(new String[] {Constants.ACT_ADD_AUDIENCE,
>     Constants.ACT_ADD_AUDIENCE, Constants.ACT_ADD_AUDIENCE});
>
>        }
>
>        public void afterPropertiesSet() throws Exception {
>            ...
>        }
>
>        @Override
>        protected void processFinish(
>                ActionRequest request, ActionResponse response,
>                Object command, BindException errors)
>        throws Exception {
>            SubForm cmd= (SubForm)command;
>            this.subService.addSubscribers(cmd.getSubKey(),
>     cmd.getSubscriber());
>
>     
> response.setRenderParameter(Constants.ATT_CTX_ID,String.valueOf(cmd.getSubscriber().getCtxId()));
>
>            response.setRenderParameter(Constants.ACT,
>     Constants.ACT_VIEW_AUDIENCE+cmd.getSubscriber().getCtxType());
>        }
>
>        @Override
>        protected void processCancel(
>                ActionRequest request, ActionResponse response,
>                Object command, BindException errors)
>        throws Exception {
>            SubForm cmd= (SubForm)command;
>            response.setRenderParameter(Constants.ACT,
>     Constants.ACT_VIEW_AUDIENCE+cmd.getSubscriber().getCtxType());
>
>     
> response.setRenderParameter(Constants.ATT_CTX_ID,String.valueOf(cmd.getSubscriber().getCtxId()));
>
>        }
>
>        @Override
>        protected void validatePage(
>                Object command, Errors errors, int page, boolean finish) {
>
>            SubForm subF = (SubForm)command;
>            SubValidator subValidator = (SubValidator) getValidator();
>            if (finish) {
>                this.getValidator().validate(command, errors);
>                return;
>            }
>            switch (page) {
>            case 0: subValidator.validateSearch(subF, errors);      
>      break;
>            case 1:  subValidator.validateSubscriberKey(subF, errors);
>     break;
>            }
>
>        }
>
>        @Override
>        protected Object formBackingObject(PortletRequest request) throws
>     Exception {
>            SubForm subForm = new SubForm();
>            String ctx = request.getParameter(Constants.ATT_CTX);
>            subForm.getSubscriber().setCtxType(ctx);
>
>     
> subForm.getSubscriber().setCtxId(PortletRequestUtils.getLongParameter(request,
>     Constants.ATT_CTX_ID));
>            return subForm;
>        }
>
>        @Override
>        protected Map referenceData(PortletRequest request, Object command,
>     Errors errors, int page) throws Exception {
>
>            boolean isGrp = ((SubForm)
>     command).getSubscriber().getIsGroup()
>     == 1 ? true : false;
>            Long ctxId = ((SubForm) command).getSubscriber().getCtxId();
>            String ctx = ((SubForm) command).getSubscriber().getCtxType();
>
>            if (!this.um.isUserAdminInCtx(ctxId, ctx,
>     request.getRemoteUser())) {
>                log.warn("SubcribeController:: user " +
>     request.getRemoteUser() + " has no role admin");
>                throw new PortletSecurityException("you are not authorized
>     for this action");
>            }
>
>            Map<String, Object> model = new HashMap<String, Object>();
>            if (ctx.equalsIgnoreCase(NewsConstants.CTX_C)) {
>                model.put(Constants.CMD_CATEGORY,
>     this.cm.getCategoryById(ctxId));
>            } else if (ctx.equalsIgnoreCase(NewsConstants.CTX_T)) {
>                model.put(Constants.CMD_TOPIC,
>     this.tm.getTopicById(ctxId));
>                Long cId = this.tm.getTopicById(ctxId).getCategoryId();
>                model.put(Constants.ATT_CNAME,
>     this.cm.getCategoryById(cId).getName());
>            }
>            model.put(Constants.ATT_PM,
>                    RolePerm.valueOf(this.um.getUserRoleInCtx(ctxId, ctx,
>     request.getRemoteUser())).getMask());
>            if (page == 0) {
>                model.put("subTypeList",  SubscribeType.values());
>            } else if (page == 1) {
>                model.put(Constants.CMD_SUB_F, (SubForm) command);
>                if (isGrp) {
>                    groups = this.subService.searchGroups(((SubForm)
>     command).getToken());
>                    model.put("grps", groups);
>                } else {
>                    users = this.um.findPersonsByToken(((SubForm)
>     command).getToken());
>                    model.put(Constants.ATT_USER_LIST, users);
>                }
>                model.put(Constants.ATT_LDAP_DISPLAY,
>     um.getLdapUserService().getSearchDisplayedAttributes());
>                model.put(Constants.ATT_NB_ITEM_TO_SHOW,
>     this.nbItemsToShow);
>                model.put(Constants.ERRORS, errors);
>            } else if (page == 2) {
>                model.put(Constants.CMD_SUB_F, (SubForm) command);
>                List<EscoUser> lu = null;
>                if (((SubForm) command).getSubscriber().getIsGroup() ==
>     0) {
>                    lu = new ArrayList<EscoUser>();
>                    for (String id : ((SubForm) command).getSubKey()) {
>                        for (IEscoUser user : users) {
>                            if (user.getUserId().equalsIgnoreCase(id)) {
>                                lu.add((EscoUser) user);
>                            }
>                        }
>                    }
>                }
>                model.put(Constants.ATT_USER_LIST, lu);
>                model.put(Constants.ATT_LDAP_DISPLAY,
>     um.getLdapUserService().getSearchDisplayedAttributes());
>            }
>            return model;
>        }
>
>        @Override
>        protected ModelAndView renderInvalidSubmit(RenderRequest request,
>     RenderResponse response)
>        throws Exception {
>            return null;
>        }
>        @Override
>        protected void handleInvalidSubmit(ActionRequest request,
>     ActionResponse response)
>        throws Exception {
>            log.warn("SubcribeController:: handleInvalidSubmit: goto home
>     page");
>            response.setRenderParameter(Constants.ACT,
>     Constants.VIEW_NEWSSTORE);
>
>        }
>
>     ...
>
>        @Override
>        protected boolean isFormSubmission(PortletRequest request) {
>            for (Enumeration params = request.getParameterNames();
>     params.hasMoreElements();) {
>                String paramName = (String) params.nextElement ();
>                if (paramName.startsWith(PARAM_TARGET) ||
>     paramName.equals(PARAM_FINISH) || paramName.equals(PARAM_FINISH))   {
>                    return true;
>                }
>            }
>            return super.isFormSubmission (request);
>        }
>
>     }
>     [/CODE]
>
>
>     Thanks for all the help you will be able to provide.
>
>
>
>     Julien Gribonvald a écrit :
>     > Hello,
>     >
>     > It makes several hours that after a problem with my multiselect
>     checkbox
>     > in a pagined table.
>     >
>     > My problem is that my checkbox which are selected in one page aren't
>     > kept when i go on a next pagined page, someone have experienced
>     a such
>     > thing or have exemples on how to works with a such case ?
>     > An other problem is that when i go back to the previous pagined
>     page i
>     > can't obtain my next selections.
>     >
>     > So here is my code :
>     >
>     >                     <spring:bind path="subKey">
>     >                                        <d:table name="${userList}"
>     > id="user" sort="list" requestURI="${submitAudience}"
>     >                                                     export="false"
>     > class="dataTable" defaultsort="2" defaultorder="ascending"
>     >
>     > pagesize="${nbItemsToShow}"
>     > decorator="org.displaytag.decorator.TotalTableDecorator">
>     >
>     >                                                     <d:column
>     > title="Select">
>     >                                                         <input
>     > type="checkbox" name="subKey"
>     >
>     > value="${user.userId}" />
>     >                                                     </d:column>
>     >
>     >                                                     <c:forEach
>     > items="${attrDisplay}" var="displayAttr">
>     >                                                         <d:column
>     > titleKey="news.label.${displayAttr}" sortable="true">
>     >                                                            
>     <c:forEach
>     > items="${user.attributes[displayAttr]}"
>     >
>     > var="attrValue">
>     >                                                                
>     <c:out
>     > value="${attrValue}" />
>     >                                                            
>     </c:forEach>
>     >                                                         </d:column>
>     >                                                     </c:forEach>
>     >
>     >
>     >                                                     <d:setProperty
>     > name="paging.banner.item_name"
>     >                                                        
>     value="${tit}" />
>     >                                                     <d:setProperty
>     > name="paging.banner.items_name"
>     >                                                        
>     value="${tit}s" />
>     >
>     >                                                 </d:table>
>     >                                                 </spring:bind>
>     > subKey is a String[] parameter.
>     >
>     > When I submit my selection I have also the current page
>     selection only.
>     >
>     > Thanks for those who can help me for this problem, i tryed many
>     things
>     > but without success.
>     >
>     > Thanks
>     >
>     > - Julien
>     >
>     >
>     
> ------------------------------------------------------------------------------
>     > Let Crystal Reports handle the reporting - Free Crystal Reports
>     2008 30-Day
>     > trial. Simplify your report design, integration and deployment -
>     and focus on
>     > what you do best, core application coding. Discover what's new with
>     > Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>     > _______________________________________________
>     > displaytag-user mailing list
>     > displaytag-user@lists.sourceforge.net
>     <mailto:displaytag-user@lists.sourceforge.net>
>     > https://lists.sourceforge.net/lists/listinfo/displaytag-user
>     >
>     >
>     >
>
>
>     
> ------------------------------------------------------------------------------
>     Let Crystal Reports handle the reporting - Free Crystal Reports
>     2008 30-Day
>     trial. Simplify your report design, integration and deployment -
>     and focus on
>     what you do best, core application coding. Discover what's new with
>     Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>     _______________________________________________
>     displaytag-user mailing list
>     displaytag-user@lists.sourceforge.net
>     <mailto:displaytag-user@lists.sourceforge.net>
>     https://lists.sourceforge.net/lists/listinfo/displaytag-user
>
>


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
displaytag-user mailing list
displaytag-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/displaytag-user

Reply via email to