Re: Wicket 6 Clustering - Component Not Found Exception
Which version of Wicket do you use? I cannot verify at the moment but I believe this is 0 by default since a long time. Check Wicket guide, section "Page storage". I think this is the second level cache. On Feb 21, 2016 12:58 AM, "mashleyttu"wrote: > Hi, > > This was also very helpful. A little more insight into our application: It > is a single page web app and we swap panels via ajax with the following > code: > > myPanel.setOutputMarkupPlaceholderTag(true); //Newly constructed panel > pnlMain.replaceWith(myPanel); //Replace panel > pnlMain = myPanel; //Update reference in MainPage.java to new panel > target.add(myPanel); //Add to target for rendering > > On the node where everything worked (node that ran the code above) we had > all the components on the page we are expecting. > > On the node with the component not found exception (code above was not run > on this node) it had the previous panel that we were on. > > Is the DefaultPageStore stored in the session? I'm thinking that is not > getting serialized by the tomcat memcached session manager. > > What would happen if we set cacheSize to 0? > > * @param cacheSize > *the number of pages to cache in memory before passing them to > *{@link IDataStore#storeData(String, int, byte[])} > > Thanks so much! > > -- > View this message in context: > http://apache-wicket.1842946.n4.nabble.com/Wicket-6-Clustering-Component-Not-Found-Exception-tp4673610p4673683.html > Sent from the Users forum mailing list archive at Nabble.com. > > - > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >
Re: Wicket 6 Clustering - Component Not Found Exception
Hi, This was also very helpful. A little more insight into our application: It is a single page web app and we swap panels via ajax with the following code: myPanel.setOutputMarkupPlaceholderTag(true); //Newly constructed panel pnlMain.replaceWith(myPanel); //Replace panel pnlMain = myPanel; //Update reference in MainPage.java to new panel target.add(myPanel); //Add to target for rendering On the node where everything worked (node that ran the code above) we had all the components on the page we are expecting. On the node with the component not found exception (code above was not run on this node) it had the previous panel that we were on. Is the DefaultPageStore stored in the session? I'm thinking that is not getting serialized by the tomcat memcached session manager. What would happen if we set cacheSize to 0? * @param cacheSize *the number of pages to cache in memory before passing them to *{@link IDataStore#storeData(String, int, byte[])} Thanks so much! -- View this message in context: http://apache-wicket.1842946.n4.nabble.com/Wicket-6-Clustering-Component-Not-Found-Exception-tp4673610p4673683.html Sent from the Users forum mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: Wicket 6 Clustering - Component Not Found Exception
Hi, On Sat, Feb 20, 2016 at 4:47 PM, mashleyttuwrote: > Hi Martin, > > Thank you for your quick reply. I had to wait for the weekend for further > testing. I added the timestamp attribute as you suggested but unfortunately > that didn't work. I also upgraded to the latest version of tomcat memcached > session manager (I posted on their forum as well), but no luck. > > I've also turned on the following logging in Wicket. Is there any finer > logging I can enable? > I've added more logging to HttpSessionDataStore for 6.23.0/7.3.0: https://issues.apache.org/jira/browse/WICKET-6098 > > log4j.logger.org.apache.wicket=TRACE > log4j.logger.org.apache.wicket.protocol.http.HttpSessionStore=TRACE > log4j.logger.org.apache.wicket.version=TRACE > log4j.logger.org.apache.wicket.RequestCycle=TRACE > de.javakaffee.web.msm.level=ALL > > The logging you suggested adding did turn up something that is intriguing. > The page length in bytes is about 2k bytes smaller on the failed request > than the working request. Same page Id (0). Any thoughts on why that might > be? > It looks like the second page instance has smaller component tree... To see the difference you will have to add logging to org.apache.wicket.pageStore.DefaultPageStore#storePage(). Use org.apache.wicket.util.tester.WicketTesterHelper#getComponentData(Page) to dump the component trees. > > Please see logs below: > > *LOG - NODE 1 - Loaded the initial page - WORKED* > 20-Feb-2016 09:47:15.262 FINE [http-apr-443-exec-1] > de.javakaffee.web.msm.MemcachedSessionService.loadFromMemcached Loading > session from memcached: E24FAB17D7B8C7AD74186C659F219E9D > 20-Feb-2016 09:47:15.262 FINE [http-apr-443-exec-1] > de.javakaffee.web.msm.LockingStrategy.lock Locking session > E24FAB17D7B8C7AD74186C659F219E9D > 20-Feb-2016 09:47:15.269 FINE [http-apr-443-exec-1] > de.javakaffee.web.msm.LockingStrategy.acquireLock Locked session > E24FAB17D7B8C7AD74186C659F219E9D > 20-Feb-2016 09:47:15.269 FINE [http-apr-443-exec-1] > de.javakaffee.web.msm.LockingStrategy.lock Locked session > E24FAB17D7B8C7AD74186C659F219E9D > 20-Feb-2016 09:47:15.274 FINE [http-apr-443-exec-1] > de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes > loading attribute 'Wicket:SessionUnbindingListener-wicket.Title1Crate' with > value > 'org.apache.wicket.session.HttpSessionStore$SessionBindingListener@695de0f1 > ' > 20-Feb-2016 09:47:15.280 FINE [http-apr-443-exec-1] > de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes > loading attribute 'wicket:wicket.Title1Crate:page:store:memory' with value > 'org.apache.wicket.pageStore.memory.PageTable@125b2442' > 20-Feb-2016 09:47:15.280 FINE [http-apr-443-exec-1] > de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes > loading attribute 'wicket:wicket.Title1Crate:session' with value > 'com._806technologies.title1cratecore.components.T1CSession@1da97278' > 20-Feb-2016 09:47:15.280 FINE [http-apr-443-exec-1] > de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes > loading attribute 'wicket:wicket.Title1Crate:timestamp' with value 'Sat Feb > 20 09:46:46 CST 2016' > 20-Feb-2016 09:47:15.281 FINE [http-apr-443-exec-1] > de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes > loading attribute > 'wicket:wicket.Title1Crate:wicket:persistentPageManagerData - > wicket.Title1Crate' with value > 'org.apache.wicket.page.PageStoreManager$SessionEntry@5f9a337e' > 20-Feb-2016 09:47:15.282 FINE [http-apr-443-exec-1] > de.javakaffee.web.msm.MemcachedSessionService.loadFromMemcached Found > session with id E24FAB17D7B8C7AD74186C659F219E9D > DEBUG - ServletWebRequest - Calculating context relative path > from: > context path '', filterPrefix '', uri '/wicket/page' > DEBUG - CompoundRequestMapper - One compatible mapper found for URL > > 'wicket/page?0-1.IBehaviorListener.0-pnlMain-pnlUploaderPanel-cntFileUploader=true=eCrate' > -> 'Mapper: org.apache.wicket.core.request.mapper.PageInstanceMapper; > Score: > 2147483647' > DEBUG - PageAccessSynchronizer - 'http-apr-443-exec-1' attempting to > acquire lock to page with id '0' > DEBUG - PageAccessSynchronizer - http-apr-443-exec-1 acquired lock to > page 0 > INFO - BlockTimer - getDataObject, t=4 milliseconds > WARN - AmazonS3Client - No content length specified for stream > data. Stream contents will be buffered in memory and could result in out > of > memory errors. > INFO - BlockTimer - getDataObject, t=2 milliseconds > INFO - BlockTimer - getDataObject, t=9 milliseconds > DEBUG - Page - ending request for page [Page class = > com._806technologies.title1crateweb.MainPage, id = 0, render count = 1], > request org.apache.wicket.protocol.http.servlet.ServletWebRequest@449d2f28 > DEBUG - Page - ending request for page [Page class = > com._806technologies.title1crateweb.MainPage, id = 0,
Re: Wicket 6 Clustering - Component Not Found Exception
Hi Martin, Thank you for your quick reply. I had to wait for the weekend for further testing. I added the timestamp attribute as you suggested but unfortunately that didn't work. I also upgraded to the latest version of tomcat memcached session manager (I posted on their forum as well), but no luck. I've also turned on the following logging in Wicket. Is there any finer logging I can enable? log4j.logger.org.apache.wicket=TRACE log4j.logger.org.apache.wicket.protocol.http.HttpSessionStore=TRACE log4j.logger.org.apache.wicket.version=TRACE log4j.logger.org.apache.wicket.RequestCycle=TRACE de.javakaffee.web.msm.level=ALL The logging you suggested adding did turn up something that is intriguing. The page length in bytes is about 2k bytes smaller on the failed request than the working request. Same page Id (0). Any thoughts on why that might be? Please see logs below: *LOG - NODE 1 - Loaded the initial page - WORKED* 20-Feb-2016 09:47:15.262 FINE [http-apr-443-exec-1] de.javakaffee.web.msm.MemcachedSessionService.loadFromMemcached Loading session from memcached: E24FAB17D7B8C7AD74186C659F219E9D 20-Feb-2016 09:47:15.262 FINE [http-apr-443-exec-1] de.javakaffee.web.msm.LockingStrategy.lock Locking session E24FAB17D7B8C7AD74186C659F219E9D 20-Feb-2016 09:47:15.269 FINE [http-apr-443-exec-1] de.javakaffee.web.msm.LockingStrategy.acquireLock Locked session E24FAB17D7B8C7AD74186C659F219E9D 20-Feb-2016 09:47:15.269 FINE [http-apr-443-exec-1] de.javakaffee.web.msm.LockingStrategy.lock Locked session E24FAB17D7B8C7AD74186C659F219E9D 20-Feb-2016 09:47:15.274 FINE [http-apr-443-exec-1] de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes loading attribute 'Wicket:SessionUnbindingListener-wicket.Title1Crate' with value 'org.apache.wicket.session.HttpSessionStore$SessionBindingListener@695de0f1' 20-Feb-2016 09:47:15.280 FINE [http-apr-443-exec-1] de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes loading attribute 'wicket:wicket.Title1Crate:page:store:memory' with value 'org.apache.wicket.pageStore.memory.PageTable@125b2442' 20-Feb-2016 09:47:15.280 FINE [http-apr-443-exec-1] de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes loading attribute 'wicket:wicket.Title1Crate:session' with value 'com._806technologies.title1cratecore.components.T1CSession@1da97278' 20-Feb-2016 09:47:15.280 FINE [http-apr-443-exec-1] de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes loading attribute 'wicket:wicket.Title1Crate:timestamp' with value 'Sat Feb 20 09:46:46 CST 2016' 20-Feb-2016 09:47:15.281 FINE [http-apr-443-exec-1] de.javakaffee.web.msm.JavaSerializationTranscoder.deserializeAttributes loading attribute 'wicket:wicket.Title1Crate:wicket:persistentPageManagerData - wicket.Title1Crate' with value 'org.apache.wicket.page.PageStoreManager$SessionEntry@5f9a337e' 20-Feb-2016 09:47:15.282 FINE [http-apr-443-exec-1] de.javakaffee.web.msm.MemcachedSessionService.loadFromMemcached Found session with id E24FAB17D7B8C7AD74186C659F219E9D DEBUG - ServletWebRequest - Calculating context relative path from: context path '', filterPrefix '', uri '/wicket/page' DEBUG - CompoundRequestMapper - One compatible mapper found for URL 'wicket/page?0-1.IBehaviorListener.0-pnlMain-pnlUploaderPanel-cntFileUploader=true=eCrate' -> 'Mapper: org.apache.wicket.core.request.mapper.PageInstanceMapper; Score: 2147483647' DEBUG - PageAccessSynchronizer - 'http-apr-443-exec-1' attempting to acquire lock to page with id '0' DEBUG - PageAccessSynchronizer - http-apr-443-exec-1 acquired lock to page 0 INFO - BlockTimer - getDataObject, t=4 milliseconds WARN - AmazonS3Client - No content length specified for stream data. Stream contents will be buffered in memory and could result in out of memory errors. INFO - BlockTimer - getDataObject, t=2 milliseconds INFO - BlockTimer - getDataObject, t=9 milliseconds DEBUG - Page - ending request for page [Page class = com._806technologies.title1crateweb.MainPage, id = 0, render count = 1], request org.apache.wicket.protocol.http.servlet.ServletWebRequest@449d2f28 DEBUG - Page - ending request for page [Page class = com._806technologies.title1crateweb.MainPage, id = 0, render count = 1], request org.apache.wicket.protocol.http.servlet.ServletWebRequest@449d2f28 *INFO - 806HttpSessionDataStoreLog - StoreData session id: E24FAB17D7B8C7AD74186C659F219E9D page id: 0 byte length: 7097* INFO - T806WebApplication - Writing Timestamp to session. DEBUG - PageAccessSynchronizer - 'http-apr-443-exec-1' released lock to page with id '0' DEBUG - PageAccessSynchronizer - 'http-apr-443-exec-1' notifying blocked threads 20-Feb-2016 09:47:16.335 FINE [http-apr-443-exec-1] de.javakaffee.web.msm.BackupSessionService.backupSession Starting for session id E24FAB17D7B8C7AD74186C659F219E9D 20-Feb-2016
Re: Wicket model problem
Very interesting discussion. Yes I agree, IDetachListener should only be used as a checker in dev. François Le 20 févr. 2016 à 12:54, Martin Grigorova écrit : > Hi, > > You might be interested in this discussion: > http://markmail.org/message/qttwc5kunubl6ieo > > Martin Grigorov > Wicket Training and Consulting > https://twitter.com/mtgrigorov > > On Fri, Feb 19, 2016 at 7:19 PM, Francois Meillet < > francois.meil...@gmail.com> wrote: > >> You can also use a IDetachListener to check that no one LDM (field) is >> attached after the page#detach() has been called. >> >> In the Application#init() you can add >> >> getFrameworkSettings().setDetachListener( >> >>new IDetachListener() { >> >>@Override >>public void onDetach(Component component) { >> >>for (Field field : >> component.getClass().getDeclaredFields()) { >>field.setAccessible(true); >> >>Class theClass = field.getType(); >>if >> (LoadableDetachableModel.class.isAssignableFrom(theClass)) { >> >>try { >>if (((LoadableDetachableModel) >> field.get(component)).isAttached()) { >>System.err.println("warning: >> component:" + component.getClass().getName() + " / " + field.getName() + " >> is attached"); >>} >>} >>// >>catch (IllegalAccessException e) { >>e.printStackTrace(); >>} >>} >>} >>} >> >>@Override >>public void onDestroyListener() { >> >>} >>} >>); >> >> >> François >> >> >> >> >> >> >> >> >> Le 19 févr. 2016 à 16:47, Bas Gooren a écrit : >> >>> Hi, >>> >>> I think the only way to track this is with custom code (or with aspects >> for example). >>> >>> Since the contract of IModel only has detach() (and not isDetached()), >> this cannot be tracked easily. >>> >>> What I would do in such a case is probably to add a requestcyclelistener >> which walks a page after a request, iterates (/visits) over all the >> components and checks their models. >>> Of course this requires the models to expose a way to check their status >> and origin. >>> >>> Also, what we do to prevent this: we have an abstract base model called >> a AbstractConversionModel which takes a parent model (S) and converts >> to a target type (T), caching the conversion. >>> This model takes a parent model as input (and subclasses of it require a >> java 8 Functionor expose an abstract method for the conversion etc). >>> This model also takes care of detaching the parent model. >>> >>> In the end it’s all about education I guess: programmer’s should be >> careful when chaining models and ensure they detach the parent (/chained) >> model. >>> >>> Met vriendelijke groet, >>> Kind regards, >>> >>> Bas >>> >>> Op 19 februari 2016 bij 15:41:03, gmparker2000 (greg.par...@brovada.com) >> schreef: >>> >>> Thanks for the reply. I suspect this is exactly the case we have created >> for >>> ourselves. Although we have a good grasp on the detach process I suspect >>> that there are places where this rule of thumb is not being followed. >>> Although the example I gave is somewhat fictitious, any of the LDMs we >> have >>> in our framework perform a detach on the parent. In the form there are >>> numerous places where adhoc anonymous models are created and this is >>> probably where the problems occur. Is there a recommended way to track >>> these down? I ended up recompiling a version of Wicket with changes to >>> LoadableDetachableModel that would essentially track every LDM within a >>> RequestCycle. At the end of a request cycle I was left with a list of the >>> models that never got detached. I also added a "whereAmI" member variable >>> to LDM that would capture the stack trace in the constructor so I could >>> figure out who instantiated the model in the first place. >>> >>> -- >>> View this message in context: >> http://apache-wicket.1842946.n4.nabble.com/Wicket-model-problem-tp4673620p4673664.html >>> Sent from the Users forum mailing list archive at Nabble.com. >>> >>> - >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> For additional commands, e-mail: users-h...@wicket.apache.org >>> >> >>
Re: Change text on wizard buttons.
Hi, Just follow the steps at http://wicket.apache.org/start/quickstart.html to create a mini application that reproduces the problem. Don't forget to add Svedish version of the resource bundle so we can add it for the next release! Thank you! Martin Grigorov Wicket Training and Consulting https://twitter.com/mtgrigorov On Thu, Feb 18, 2016 at 9:48 AM, calle sollanderwrote: > Thank you Martin. > I'll create a ticket, I have never done this before but will read the > instructions and give it a go next week. > > I gave up on the Wizard component and have now built my own little purpose > built workflow instead. > > Regards, Calle > > > From: Martin Grigorov > Sent: Thursday, February 18, 2016 7:44 AM > To: users@wicket.apache.org > Subject: Re: Change text on wizard buttons. > > Hi, > > Please create a ticket with a quickstart application. > I this you are correct - because of the existence of Wizard.properties > Wicket doesn't consult with MyApplication_sv.properties. > A workaround would be to introduce org.apache.wicket.extensions.wizard > package in your application and put there Wizard_sv.properties.xml > > Martin Grigorov > Wicket Training and Consulting > https://twitter.com/mtgrigorov > > On Wed, Feb 17, 2016 at 9:06 AM, calle sollander > wrote: > > > Hello! > > > > I'm trying to get the buttons in the Wizard component to be in Swedish > but > > I can't get it working. > > I have added this to my properties file: > > > > datatable.no-records-found=Din sökning gav ingen träff > > org.apache.wicket.extensions.wizard.next=Nästa > > > org.apache.wicket.extensions.wizard.previous=< Föregående > > org.apache.wicket.extensions.wizard.last=Sista > > org.apache.wicket.extensions.wizard.finish=Spara > > org.apache.wicket.extensions.wizard.cancel=Avbryt > > > > I use a Wizard with two simple WizardSteps like this: > > > > System.out.println("previous: " > > > +Application.get().getResourceSettings().getLocalizer().getString("org.apache.wicket.extensions.wizard.previous", > > null, null, null, null, "DEFAULT")); > > WizardModel m = new WizardModel(); > > m.add(new DummyStep()); > > m.add(new DummyStep2()); > > Wizard w = new Wizard("wizard", m); > > add(w); > > > > The sys.out above prints the Swedish word for previous but the button in > > the wizard is in English. > > If I change the Locale to e.g. French the buttons show French texts, it > > seems like the wizard is always using the Wizard.properties file and > since > > there > > is no Swedish version it defaults to the English one. > > The "datatable.no-records-found" property works like it is supposed to in > > a Datatable on the same page. > > > > Is it not possible to override the button texts in a Wizard? > > Should I use some other component for my Wizard? > > > > Regards, Calle > > > > > > - > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >
Re: Wicket model problem
Hi, You might be interested in this discussion: http://markmail.org/message/qttwc5kunubl6ieo Martin Grigorov Wicket Training and Consulting https://twitter.com/mtgrigorov On Fri, Feb 19, 2016 at 7:19 PM, Francois Meillet < francois.meil...@gmail.com> wrote: > You can also use a IDetachListener to check that no one LDM (field) is > attached after the page#detach() has been called. > > In the Application#init() you can add > > getFrameworkSettings().setDetachListener( > > new IDetachListener() { > > @Override > public void onDetach(Component component) { > > for (Field field : > component.getClass().getDeclaredFields()) { > field.setAccessible(true); > > Class theClass = field.getType(); > if > (LoadableDetachableModel.class.isAssignableFrom(theClass)) { > > try { > if (((LoadableDetachableModel) > field.get(component)).isAttached()) { > System.err.println("warning: > component:" + component.getClass().getName() + " / " + field.getName() + " > is attached"); > } > } > // > catch (IllegalAccessException e) { > e.printStackTrace(); > } > } > } > } > > @Override > public void onDestroyListener() { > > } > } > ); > > > François > > > > > > > > > Le 19 févr. 2016 à 16:47, Bas Goorena écrit : > > > Hi, > > > > I think the only way to track this is with custom code (or with aspects > for example). > > > > Since the contract of IModel only has detach() (and not isDetached()), > this cannot be tracked easily. > > > > What I would do in such a case is probably to add a requestcyclelistener > which walks a page after a request, iterates (/visits) over all the > components and checks their models. > > Of course this requires the models to expose a way to check their status > and origin. > > > > Also, what we do to prevent this: we have an abstract base model called > a AbstractConversionModel which takes a parent model (S) and converts > to a target type (T), caching the conversion. > > This model takes a parent model as input (and subclasses of it require a > java 8 Functionor expose an abstract method for the conversion etc). > > This model also takes care of detaching the parent model. > > > > In the end it’s all about education I guess: programmer’s should be > careful when chaining models and ensure they detach the parent (/chained) > model. > > > > Met vriendelijke groet, > > Kind regards, > > > > Bas > > > > Op 19 februari 2016 bij 15:41:03, gmparker2000 (greg.par...@brovada.com) > schreef: > > > > Thanks for the reply. I suspect this is exactly the case we have created > for > > ourselves. Although we have a good grasp on the detach process I suspect > > that there are places where this rule of thumb is not being followed. > > Although the example I gave is somewhat fictitious, any of the LDMs we > have > > in our framework perform a detach on the parent. In the form there are > > numerous places where adhoc anonymous models are created and this is > > probably where the problems occur. Is there a recommended way to track > > these down? I ended up recompiling a version of Wicket with changes to > > LoadableDetachableModel that would essentially track every LDM within a > > RequestCycle. At the end of a request cycle I was left with a list of the > > models that never got detached. I also added a "whereAmI" member variable > > to LDM that would capture the stack trace in the constructor so I could > > figure out who instantiated the model in the first place. > > > > -- > > View this message in context: > http://apache-wicket.1842946.n4.nabble.com/Wicket-model-problem-tp4673620p4673664.html > > Sent from the Users forum mailing list archive at Nabble.com. > > > > - > > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > > For additional commands, e-mail: users-h...@wicket.apache.org > > > >
Re: Wicketstuff editable grid - 7.1.0
Hi, Please share the mini application somewhere, e.g. GitHub. Martin Grigorov Wicket Training and Consulting https://twitter.com/mtgrigorov On Fri, Feb 19, 2016 at 7:30 PM, Mihir Chhayawrote: > Ok, so creating a small project with two panels(Person and Customer) and a > page for similar use case resulted in following stacktrace. > The panels are added in the order of PersonPanel, CustomerPanel in the > parent page. > > The line# 163 in onSave method of EditableGrid is calling > EditableGrid.this.onSave(target, rowModel); I wonder if the reference to > this is referring to the first EditableGrid with Person records. Switching > the order of adding grid panels throws the error other way around; > complaining for Person cannot be cast to Customer. > > *java.lang.ClassCastException: spikes.domain.Customer cannot be cast > to spikes.domain.Person* > at spikes.view.PersonPanel$1.onSave(PersonPanel.java:68) > at org.wicketstuff.egrid.EditableGrid$3.onSave(EditableGrid.java:163) > at > org.wicketstuff.egrid.column.EditableGridActionsColumn$1.onSave(EditableGridActionsColumn.java:34) > at > org.wicketstuff.egrid.column.EditableGridActionsPanel$2.onSuccess(EditableGridActionsPanel.java:71) > at > org.wicketstuff.egrid.component.EditableGridSubmitLink.onSubmit(EditableGridSubmitLink.java:37) > at > org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink$1.onSubmit(AjaxSubmitLink.java:110) > at > org.apache.wicket.ajax.form.AjaxFormSubmitBehavior$AjaxFormSubmitter.onSubmit(AjaxFormSubmitBehavior.java:215) > at > org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1307) > at > org.wicketstuff.egrid.EditableGrid$NonValidatingForm.process(EditableGrid.java:79) > at > org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:795) > at > org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:171) > at > org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:155) > at > org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:588) > at java.lang.reflect.Method.invoke(Method.java:606) > at > org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258) > at > org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:241) > at > org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:248) > at > org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:234) > at > org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:865) > at > org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64) > at > org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:265) > at > org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:222) > at > org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:293) > at > org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261) > at > org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203) > at > org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:284) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) > at > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) > at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) > at > org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) > at > org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) > at > org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:744) > > Complete stack: > >
Re: Quesitont about .repeater.DataTableFilterToolbarPage : mutliple fitered
Hi, On Sat, Feb 20, 2016 at 12:38 AM, andre seamewrote: > Hello, > > > The repeater.DataTableFilterToolpage < > http://examples6x.wicket.apache.org/repeater/wicket/bookmarkable/org.apache.wicket.examples.source.SourcesPage?1_class=org.apache.wicket.examples.repeater.DataTableFilterToolbarPage> > demonstrates a unique filter. > > > My questions are : > > - Is it possible to have several sortable columns. > Do you mean filterable instead of sortable? > > - How to put the 2 sortable fields into the th ? Or Foreach sortable > column, I would like to add the 2 fields in the associated column. > > > For instance: > > > >Born datefrom: ... >Death Datefrom: ... > > > > Thanks, > > PHL. >