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

Reply via email to