Hi, i did another way an that way worked.
Replace markupContainer.add(new Label(DETAILS_PANEL_ID,"label").setOutputMarkupId(true)); with private final Label labelToReplace = new Label(DETAILS_PANEL_ID,"label").setOutputMarkupId(true); .... markupContainer.add(labelToReplace); ... And in onNodeLinkClicked create your panel and then do: labelToReplace.replaceWith(targetPanel); Hope this helps. -----Ursprüngliche Nachricht----- Von: jahid [mailto:ja...@outscore.se] Gesendet: Mittwoch, 4. November 2009 15:13 An: users@wicket.apache.org Betreff: Re: LinkTree Guys, thanks a lot for quick reply. I have changed my code according to your mentioned way, but seems like i am doing something wrong. Below are my code, markup and stacktrace - 1. private WebMarkupContainer markupContainer; 2. final String DETAILS_PANEL_ID ="detailsPanel"; 3. public ListContractsPage() { 4. markupContainer =new WebMarkupContainer("markupContainer"); 5. markupContainer.setOutputMarkupId(true); 6. markupContainer.add(new Label(DETAILS_PANEL_ID,"label").setOutputMarkupId(true)); 7. add(prepareTree()); 8. add(markupContainer); 9. } 10. private BaseTree prepareTree() { 11. DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("Contracts"); 12. TreeModel treeModel = new DefaultTreeModel(rootNode); 13. assembleContracts(rootNode); 14. final LinkTree linkTree=new LinkTree("tree", treeModel){ 15. @Override 16. protected void onNodeLinkClicked(Object node, BaseTree tree, AjaxRequestTarget target) { 17. //markupContainer.remove(DETAILS_PANEL_ID); 18. Object userObject = ((DefaultMutableTreeNode) node).getUserObject(); 19. Panel targetPanel; 20. if (userObject instanceof ServiceHandle) { 21. targetPanel = new ServiceDetailsPanel<ServiceHandle>(DETAILS_PANEL_ID, (ServiceHandle) userObject); 22. } else if (userObject instanceof ContractHandle) { 23. targetPanel = new ContractDetailsPanel<ContractHandle>(DETAILS_PANEL_ID, (ContractHandle) userObject); 24. } else { 25. throw new AssertionError("Expected: master, sub or service handle, but found: " + userObject.getClass().getSimpleName()); 26. } 27. targetPanel.setOutputMarkupId(true); 28. ListContractsPage.this.addOrReplace(targetPanel); 29. target.addComponent(targetPanel); 30. } 31. }; 32. linkTree.setOutputMarkupId(true); 33. linkTree.getTreeState().expandNode(rootNode); 34. return linkTree; 35. } 1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3. <html xmlns="http://www.w3.org/1999/xhtml" 4. xmlns:wicket="http://wicket.apache.org/" xml:lang="en" lang="en"> 5. <body> 6. <wicket:extend> 7. <h4>Contracts:</h4> 8. <table> 9. <tr> 10. <td> 11. <span wicket:id="tree">[tree will be here]</span> 12. </td> 13. </tr> 14. <tr> 15. <td> 16. <span wicket:id="markupContainer"> 17. <span wicket:id="detailsPanel"></span> 18. </span> 19. </td> 20. </tr> 21. </table> 22. </wicket:extend> 23. </body> 24. </html> WicketMessage: Unable to find the markup for the component. That may be due to transparent containers or components implementing IComponentResolver: [MarkupContainer [Component id = detailsPanel]] Root cause: org.apache.wicket.WicketRuntimeException: Unable to find the markup for the component. That may be due to transparent containers or components implementing IComponentResolver: [MarkupContainer [Component id = detailsPanel]] at org.apache.wicket.MarkupFragmentFinder.find(MarkupFragmentFinder.java:125) at org.apache.wicket.Component.locateMarkupStream(Component.java:3820) at org.apache.wicket.Component.renderComponent(Component.java:2557) at org.apache.wicket.ajax.AjaxRequestTarget.respondComponent(AjaxRequestTarget.java:793) at org.apache.wicket.ajax.AjaxRequestTarget.respondComponents(AjaxRequestTarget.java:667) at org.apache.wicket.ajax.AjaxRequestTarget.respond(AjaxRequestTarget.java:579) at org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:105) at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1249) at org.apache.wicket.RequestCycle.step(RequestCycle.java:1320) at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1419) at org.apache.wicket.RequestCycle.request(RequestCycle.java:545) at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:456) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:289) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:326) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:536) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:915) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) //thanks Pedro Santos wrote: > Add you need to replace your old detailsPanel for the new one. Like: > HomePage.this.replace(targetPanel) > > On Wed, Nov 4, 2009 at 11:20 AM, Vytautas Racelis <turi...@gmail.com> wrote: > > >> Hi, >> you should have a container and add that container into target. >> >> This is how i've done this: >> >> http://xaloon.googlecode.com/svn/trunk/xaloon-wicket-jpa-components/src/main/java/org/xaloon/wicket/component/tree/TreePanel.java >> >> >> jahid wrote: >> >> >>> Hi, >>> >>> I have a LinkTree on a page, that page also contains a panel. First time >>> the page will be loaded with an empty panel. But if user clicks on link, >>> then i wanted to replace the empty panel with a new panel. but it seems like >>> its not working. Below is the part of my code- >>> >>> 1. public ListContractsPage() { >>> 2. add(prepareTree()); >>> 3. add(new >>> EmptyPanel("detailsPanel","").setOutputMarkupId(true)); >>> 4. } >>> 5. private BaseTree prepareTree() { >>> 6. DefaultMutableTreeNode rootNode = new >>> DefaultMutableTreeNode("Contracts"); >>> 7. TreeModel treeModel = new DefaultTreeModel(rootNode); >>> 8. assembleContracts(rootNode); >>> 9. final LinkTree linkTree=new LinkTree("tree", treeModel){ >>> 10. @Override >>> 11. protected void onNodeLinkClicked(Object node, BaseTree >>> tree, AjaxRequestTarget target) { >>> 12. Object userObject = ((DefaultMutableTreeNode) >>> node).getUserObject(); >>> 13. Panel targetPanel; >>> 14. if (userObject instanceof ServiceHandle) { >>> 15. targetPanel = new >>> ServiceDetailsPanel<ServiceHandle>("detailsPanel", (ServiceHandle) >>> userObject); >>> 16. } else if (userObject instanceof ContractHandle) { >>> 17. targetPanel = new >>> ContractDetailsPanel<ContractHandle>("detailsPanel", >>> (ContractHandle) userObject); >>> 18. } else { >>> 19. throw new AssertionError("Expected: master, >>> sub or service handle, but found: " + >>> userObject.getClass().getSimpleName()); >>> 20. } >>> 21. targetPanel.setOutputMarkupId(true); >>> 22. target.addComponent(targetPanel); >>> 23. } >>> 24. }; >>> 25. return linkTree; >>> 26. } >>> >>> >>> The panel which is added on line3, will be replaced by line15 or line17. >>> But it seems like its not replacing. I actually debugged, and the control >>> reaches over there and executes upto line22. But the new panel was never >>> rendered on browser. >>> >>> I am using wicket 1.4.2. >>> >>> Anyone have any idea why new panels are not rendered? >>> >>> Thanks in advance. >>> >>> Jahid >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> For additional commands, e-mail: users-h...@wicket.apache.org >>> >>> >>> >> -- >> Regards, >> Vytautas Racelis >> ----------------------------------- >> phone:+370-600-34389 >> e-mail: turi...@gmail.com >> www.xaloon.org >> www.leenle.com >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> >> > > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org