of course there is no reason to use an ajax link if all you are going to do is repaint the entire page anyways...
also code like this: setresponsepage(getpage()) is always suspect. by default wicket repaints the same page so there is no need to call this. when inside ajax you should add components you want repainted to the request target that is passed in to you. setresponsepage should only be used when actually going to a different page. you are not using the framework properly... -igor 2009/7/29 Martin Makundi <[email protected]>: > 1. > > You can fix linda's suggestion by calling setOutputMarkupId(true) on > your tabbedpanel. > > 2. The reason for: > > 10:42:27 ERROR [RequestCycle] - No Page found for component > [MarkupContainer [Component id = panel]] > java.lang.IllegalStateException: No Page found for component > [MarkupContainer [Component id = panel]] > at org.apache.wicket.Component.getPage(Component.java:1729) > > Is that you just called setSelectedTab() which DISCONNECTS the current > tab from the page hierarcy. Try getting the page before that: > onClick() { > Page page = getPage(); > tabbedPanel.setSelectedTab(0); > setREsponsePage(page); > } > > > ** > Martin > > > ** > Martin > > 2009/7/29 Gajo Csaba <[email protected]>: >> Hmm there's something very wrong here... >> >> I try to refresh the page like this: >> setResponsePage(getPage()); >> >> When this is the only action, the current page is refreshed. When I write >> setSelectedTab(0) above it, I get an error. >> >> 10:42:27 ERROR [RequestCycle] - No Page found for component [MarkupContainer >> [Component id = panel]] >> java.lang.IllegalStateException: No Page found for component >> [MarkupContainer [Component id = panel]] >> at org.apache.wicket.Component.getPage(Component.java:1729) >> at >> si.irose.iprojekti.treeview.TreeViewPanel.deleteBtnClick(TreeViewPanel.java:160) >> at >> si.irose.iprojekti.treeview.TreeViewPanel.access$200(TreeViewPanel.java:45) >> at >> si.irose.iprojekti.treeview.TreeViewPanel$3.onSubmit(TreeViewPanel.java:95) >> at >> org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton$1.onSubmit(AjaxFallbackButton.java:74) >> at >> org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:140) >> at >> org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:166) >> at >> org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:299) >> at >> org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:105) >> at >> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92) >> at >> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1192) >> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1271) >> at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1370) >> at org.apache.wicket.RequestCycle.request(RequestCycle.java:501) >> at >> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:455) >> at >> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:288) >> at >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) >> at >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) >> at >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) >> at >> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) >> at >> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) >> at >> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) >> at >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) >> at >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) >> at >> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) >> at >> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) >> at >> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) >> at java.lang.Thread.run(Thread.java:619) >> >> >> I've also tried with render() and renderComponent(), on a page and on the >> tabPanel level... >> >> Linda's suggestion also generates an error, albeit a different one. >> "innertabs" is found in HomePage.html, which looks like this: >> >> <html> >> <head> >> </head> >> <body> >> <wicket:extend> >> <div wicket:id="innertabs" class="innertabpanel">[inner tabbed panel >> will be here]</div> >> </wicket:extend> >> </body> >> </html> >> >> The tabbed panel is the "innertabs". The generated exception is: >> >> java.lang.IllegalArgumentException: cannot update component that does not >> have setOutputMarkupId property set to true. Component: [MarkupContainer >> [Component id = innertabs]] >> at >> org.apache.wicket.ajax.AjaxRequestTarget.addComponent(AjaxRequestTarget.java:345) >> at >> si.irose.iprojekti.treeview.TreeViewPanel.deleteBtnClick(TreeViewPanel.java:161) >> at >> si.irose.iprojekti.treeview.TreeViewPanel.access$200(TreeViewPanel.java:45) >> at >> si.irose.iprojekti.treeview.TreeViewPanel$3.onSubmit(TreeViewPanel.java:95) >> at >> org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton$1.onSubmit(AjaxFallbackButton.java:74) >> at >> org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:140) >> at >> org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:166) >> at >> org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:299) >> at >> org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:105) >> at >> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92) >> at >> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1192) >> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1271) >> at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1370) >> at org.apache.wicket.RequestCycle.request(RequestCycle.java:501) >> at >> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:455) >> at >> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:288) >> at >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) >> at >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) >> at >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) >> at >> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) >> at >> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) >> at >> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) >> at >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) >> at >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) >> at >> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) >> at >> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) >> at >> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) >> at java.lang.Thread.run(Thread.java:619) >> >> >> getPage().addOrReplace(tabPanel); also generates some third error... >> >> tabPanel.addOrReplace(tabPanel); generates an error saying I can't replace a >> component with itself :) >> >> Writing the complete URL >> ?wicket:interface=:2:innertabs:tabs-container:tabs:0:link:1:ILinkListener:: >> seems to be the only suggestion which actually works for now. >> >> >> >> >> >> Martin Makundi wrote: >>> >>> Ah.. do you repaint the page after your ajax button call? >>> >>> ** >>> Martin >>> >>> 2009/7/29 Gajo Csaba <[email protected]>: >>> >>>> >>>> This is what the link does in Wicket's source code: >>>> >>>> new Link(linkId) { >>>> private static final long serialVersionUID = 1L; >>>> >>>> �...@override >>>> public void onClick() { >>>> setSelectedTab(index); // <----- >>>> } >>>> }; >>>> >>>> >>>> This is my code: >>>> /** Click on the Delete button */ >>>> private void deleteBtnClick(AjaxRequestTarget target, Form<?> form) { >>>> TabbedPanel tabPanel = ((HomePage)getWebPage()).getTabbedPanel(); >>>> tabPanel.setSelectedTab(0); // <------- >>>> } >>>> >>>> Wicket's code works, mine doesn't. I've tried with a button and an >>>> ajaxfallbacklink... Maybe I really should redirect to the same page with >>>> another parameter, like you did. >>>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [email protected] >>> For additional commands, e-mail: [email protected] >>> >>> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
