I usually use a hidden input with the value "paginating".
And for the other buttons (Search, Cancel, etc.) put a onclick javascript
function that changes the value of the hidden to "not Paginating".

Cheers,
Narcis

On Fri, Nov 13, 2009 at 11:47 AM, Julien Gribonvald <
julien.gribonv...@recia.fr> wrote:

> 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