In other words, what you should have done in the first place was
public class testChildPanel extends testSuperPanel {
  public testChildPanel(String id) {
      super(id);
      get("childContainer").add(new Label("childLabel","Test!"));
  }
}

So that the label would have actually been attached to the
webmarkupcontainer instead of the panel.

However the solution Martijn provided is much more elegant since it
eliminates the need for subclasses to be aware of implementation
details in the parent class.

Maurice

On Sat, Apr 5, 2008 at 6:53 PM, Martijn Dashorst
<[EMAIL PROTECTED]> wrote:
> You should do this:
>
>  WMC wmc = new WMC("childContainer") {
>     @override boolean isTransparentResolver() { return true; }
>  };
>
>  This is not a bug. If you do add() in the subclass's constructor, you
>  add to the page itself. Which is how the hierarchy is constructed. By
>  telling the WMC that it is a transparent resolver, you tell it to look
>  for children without attached markup in its siblings.
>
>  Martijn
>
>
>
>  On 4/5/08, Oliver Sawade <[EMAIL PROTECTED]> wrote:
>  > Hi everyone,
>  >  my first mail to the list, i hope this wasn`t answered million times
>  > before, but the wicket users faq is empty so i couldn`t find it there ;)
>  >
>  >  I'm using wicket1.3 to create a generic panel with the option to hide
>  > everything inside when clicking an ajax-button. While the actual
>  > hiding&showing works fine I'm having trouble with inheritance.
>  >  This example should show what I mean:
>  >
>  >  This is my generic super panel (no ajax stuff in it here to show the
>  > essential problem). The idea is, that the childContainer is set to
>  > Visible:false when the button is clicked. All of this should happen in the
>  > super class, so i don't have to care about it in the child class:
>  >
>  >  public class testSuperPanel extends Panel {
>  >    public testSuperPanel(String id) {
>  >        super(id);
>  >        add(new WebMarkupContainer("childContainer"));
>  >    }
>  >  }
>  >
>  >  The markup for testSuperPanel:
>  >  <wicket:panel>
>  >    <div wicket:id="childContainer">
>  >        <wicket:child/>
>  >    </div>
>  >  </wicket:panel>
>  >
>  >  This is a sample child panel:
>  >
>  >  public class testChildPanel extends testSuperPanel {
>  >    public testChildPanel(String id) {
>  >        super(id);
>  >        add(new Label("childLabel","Test!"));
>  >    }
>  >  }
>  >
>  >  and the Markup:
>  >  <wicket:extend>
>  >    <span wicket:id="childLabel"></span>
>  >  </wicket:extend>
>  >
>  >  As you see, it should simply display "Test" inside a MarkupContainer 
> (which
>  > could be hidden from the superClass). When i try to display this Panel
>  > however I get an Exception stating that no code is added for the Label
>  > "childLabel"!
>  >  This can be solved by adding the childLabel to the container in the
>  > superClass, but thats obviously not the way it is meant to be:
>  >
>  >  public class testSuperPanel extends Panel {
>  >    public testSuperPanel(String id) {
>  >        super(id);
>  >        WebMarkupContainer wmc = new
>  > WebMarkupContainer("childContainer");
>  >        wmc.add(new Label("childLabel","Test!"));
>  >        add(wmc);
>  >    }
>  >  }
>  >
>  >  So, is this a wicket bug with inheritance inside containers or am I just
>  > doing things the wrong way?
>  >
>  >  Thanks for your help!
>  >  best regards, Oli
>  >
>  > ---------------------------------------------------------------------
>  >  To unsubscribe, e-mail:
>  > [EMAIL PROTECTED]
>  >  For additional commands, e-mail: [EMAIL PROTECTED]
>  >
>  >
>
>
>  --
>  Buy Wicket in Action: http://manning.com/dashorst
>  Apache Wicket 1.3.2 is released
>  Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3.2
>
>
>
>  ---------------------------------------------------------------------
>  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]

Reply via email to