|
View:
New views
6 Messages
—
Rating Filter:
Alert me
|
|
|
spring binding with displaytable and multi checkboxHello,
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@... https://lists.sourceforge.net/lists/listinfo/displaytag-user |
|
|
Re: spring binding with displaytable and multi checkboxHi,
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@... > 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@... https://lists.sourceforge.net/lists/listinfo/displaytag-user |
|
|
Re: spring binding with displaytable and multi checkboxHi,
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.gribonvald@...> wrote: Hi, ------------------------------------------------------------------------------ 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@... https://lists.sourceforge.net/lists/listinfo/displaytag-user |
|
|
Re: spring binding with displaytable and multi checkboxThanks 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.gribonvald@... <mailto:julien.gribonvald@...>> 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@... > <mailto:displaytag-user@...> > > 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@... > <mailto:displaytag-user@...> > 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@... https://lists.sourceforge.net/lists/listinfo/displaytag-user |
|
|
Re: spring binding with displaytable and multi checkboxI 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.gribonvald@...> 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. ------------------------------------------------------------------------------ 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@... https://lists.sourceforge.net/lists/listinfo/displaytag-user |
|
|
Re: spring binding with displaytable and multi checkboxSo finaly I'm not wrong, my problem is due to a bug with the js fonction
: javascript:displaytagform see here for the bug : http://jira.codehaus.org/browse/DISPL-601 Someone know a workaround ? or have solved this problem ? Thanks Paslaru Narcis a écrit : > 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.gribonvald@... <mailto:julien.gribonvald@...>> 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.gribonvald@... > <mailto:julien.gribonvald@...> > <mailto:julien.gribonvald@... > <mailto:julien.gribonvald@...>>> 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@... > <mailto:displaytag-user@...> > <mailto:displaytag-user@... > <mailto:displaytag-user@...>> > > > 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@... > <mailto:displaytag-user@...> > <mailto:displaytag-user@... > <mailto:displaytag-user@...>> > > 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@... https://lists.sourceforge.net/lists/listinfo/displaytag-user |
| Free embeddable forum powered by Nabble | Forum Help |