May be you should try making your panel abstract and override an abstract method as an anonymous inner class of your page, instead of all your "ifs" ?

Like :

public abstract class MyPageRelatedPanel extends Panel {

  public MyPageRelatedPanel(String id, IModel model) {
    super(id, model);
    [..add your common components, etc..]
    createSpecificPart();
  }

  protected abstract void createSpecificPart();

}

and in your page :

  add(new MyPageRelatedPanel("id", panelModel) {

    protected abstract void createSpecificPart() {
     [..add your special page related components, behaviors, etc.. here]
    }
  };

This way you keep your panel generic enough and page independant and can reuse it in pages you haven't created yet !

Just my 2 cents,

Cheers,

Antoine.

Artur W. a écrit :
Hi!

I want to create a Panel that its content depends to which page it was
added.

So I want to do something like this

if (getPage().getPageClass() == Page1.class) {
    [...]
} else if (getPage().getPageClass() == Page2.class) {
    [...]
} else {
    [...]
}

and so on.

But when I call getPage() I get
org.apache.wicket.WicketRuntimeException: Can't instantiate page using
constructor public com.test.AdminPage(org.apache.wicket.PageParameters) and
argument at
org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:175)
        at
org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66)
        at
org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:262)
        at
org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:283)
        at
org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:210)
        at
org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:90)
        at
org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1094)

[...]

Caused by: java.lang.IllegalStateException: No Page found for component
[MarkupContainer [Component id = menuPanel, page = <No Page>, path =
menuPanel.AdminPage$3]]
        at org.apache.wicket.Component.getPage(Component.java:1600)



How can I do this? (I use Wicket 1.3rc2)



Thanks,
Artur


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to