Don't use page link!

Use PageLink only if you actually know what you are doing.

In this case: you should use the normal Link and set the responsepage
in the onclick.

Page1 {
    ... counter ...

    add(new Link("page2") { onclick() { setResponsePage(new
Page2(Page1.this)); });
    ...
}


Page2 {
    private Page returnToPage;
    public Page2(Page returnTo) {
        this.returnToPage = returnTo;

        add(new Link("page1") { onclick() { setResponsePage(returnToPage); }});
    }
}

Don't do the following, I repeat: the following is REALLY BAD:

add(new PageLink("page1", new Page1()));
add(new PageLink("page2", new Page2()));
add(new PageLink("page3", new Page3()));

Don't do that! It will exhaust your memory (you create pages upfront,
even when they never will be used). Remember what the 'new' keyword
does?

Martijn


On 6/26/07, Maurice Marrink <[EMAIL PROTECTED]> wrote:
> Sure :)
>
> In page 1 you do add(new PageLink("start", Foo.class));
> because you are using the class reference to your 2nd page here wicket
> always creates a new instance, the same happens with the pagelink on
> page2 where you go back to page 1.
>
> The trick is to tell wicket to use an existing page.
> so on page 1 we could do this
> add(new PageLink("start", new IPageLink()
> {
>  public Page getPage()
> {
>  //now we can decide which instance / constructor we use
>  //in this case a new page is fine
>  return new Foo(HelloWorld.this);
> }
> public Class getPageIdentity()
> {
>  return Foo.class;
> }
> }));
>
> Because we now pass the first page to the 2nd page we need to alter
> the constructor of the 2nd page
>
>  public Foo(Page returnPage) {
>                add(new Label("message", "Foo page"));
> //this basically wraps your page in an IPageLink like we did manually on page 
> 1
>                Link pl = new PageLink("return", returnPage);
>                pl.add(new AttributeAppender("class", new Model("return"), " 
> "));
>                add(pl);
>        }
>
> And thats all there is to it.
> And i did not even have to use a regular link like i though we would
> have to in my previous response :)
>
> Maurice
>
> On 6/26/07, Leucht, Axel <[EMAIL PROTECTED]> wrote:
> > Thx for the quick answer, but being a newbie can I ask you to elaborate it 
> > a little bit more?
> >
> > Regards
> >
> > /Axel
> >
> >
> > >>-----Ursprüngliche Nachricht-----
> > >>Von: [EMAIL PROTECTED]
> > >>[mailto:[EMAIL PROTECTED] Auftrag
> > >>von Maurice
> > >>Marrink
> > >>Gesendet: Dienstag, 26. Juni 2007 11:07
> > >>An: wicket-user@lists.sourceforge.net
> > >>Betreff: Re: [Wicket-user] newbie-Question
> > >>
> > >>
> > >>You need to pass a reference for page 1 to page 2 and then instead of
> > >>using a pagelink on page2 to return to page1 use a regular link which
> > >>sets the responsepage to the instance of page 1 you passed to page 2.
> > >>
> > >>Maurice
> > >>
> > >>On 6/26/07, Leucht, Axel <[EMAIL PROTECTED]> wrote:
> > >>> Sorry if this is a dumb question and has been answered
> > >>hundred times but I couldn't find any answer to the following
> > >>question.
> > >>>
> > >>> I do have two HTML pages. Page one contains a link which
> > >>displays the number on clicks the user executed. The second
> > >>link jumps to page 2. Page 2 just displays a link to go back
> > >>to page 1.
> > >>>
> > >>> Assume that user clicks 5 times on the ClickCounter link in
> > >>page 1 and hence the link displays as 'This link is clicked 5
> > >>times'. When the user the switches to page 2 and immediately
> > >>goes back to page 1 the counter is reset to 0 and rendered as
> > >>'This link is clicked 0 times'.
> > >>>
> > >>> What am I doing wrong here? I assumed that clicking on the
> > >>return-button on page 2 goes "back" to the original session
> > >>in page 1 ?!
> > >>>
> > >>> Here is my Java classes:
> > >>> -- page 1 ---
> > >>> public class HelloWorld extends WebPage implements Serializable {
> > >>>         public HelloWorld() {
> > >>>                 add(new Label("message", "Foo World!"));
> > >>>                 add(new PageLink("start", Foo.class));
> > >>>                 final ClickCount count1 = new ClickCount();
> > >>>                 Link link1 = new Link("link1") {
> > >>>                         public void onClick() {
> > >>>                                 count1.clicks++;
> > >>>                         }
> > >>>                 };
> > >>>                 link1.add(new Label("label1", new Model() {
> > >>>                         public java.lang.Object
> > >>getObject(Component component) {
> > >>>                                 return
> > >>Integer.toString(count1.clicks);
> > >>>                                 }
> > >>>                 }));
> > >>>                 add(link1);
> > >>>         }
> > >>>
> > >>>         class ClickCount implements Serializable {
> > >>>                 private int clicks = 0;
> > >>>         }
> > >>> }
> > >>> --- page 2 ---
> > >>> public class Foo extends WebPage {
> > >>>         public Foo() {
> > >>>                 add(new Label("message", "Foo page"));
> > >>>                 Link pl = new PageLink("return", HelloWorld.class);
> > >>>                 pl.add(new AttributeAppender("class", new
> > >>Model("return"), " "));
> > >>>                 add(pl);
> > >>>         }
> > >>> }
> > >>> /Axel
> > >>>
> > >>>
> > >>--------------------------------------------------------------
> > >>-----------
> > >>> This SF.net email is sponsored by DB2 Express
> > >>> Download DB2 Express C - the FREE version of DB2 express and take
> > >>> control of your XML. No limits. Just data. Click to get it now.
> > >>> http://sourceforge.net/powerbar/db2/
> > >>> _______________________________________________
> > >>> Wicket-user mailing list
> > >>> Wicket-user@lists.sourceforge.net
> > >>> https://lists.sourceforge.net/lists/listinfo/wicket-user
> > >>>
> > >>
> > >>--------------------------------------------------------------
> > >>-----------
> > >>This SF.net email is sponsored by DB2 Express
> > >>Download DB2 Express C - the FREE version of DB2 express and take
> > >>control of your XML. No limits. Just data. Click to get it now.
> > >>http://sourceforge.net/powerbar/db2/
> > >>_______________________________________________
> > >>Wicket-user mailing list
> > >>Wicket-user@lists.sourceforge.net
> > >>https://lists.sourceforge.net/lists/listinfo/wicket-user
> > >>
> >
> > -------------------------------------------------------------------------
> > This SF.net email is sponsored by DB2 Express
> > Download DB2 Express C - the FREE version of DB2 express and take
> > control of your XML. No limits. Just data. Click to get it now.
> > http://sourceforge.net/powerbar/db2/
> > _______________________________________________
> > Wicket-user mailing list
> > Wicket-user@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/wicket-user
> >
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> Wicket-user mailing list
> Wicket-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wicket-user
>


-- 
Wicket joins the Apache Software Foundation as Apache Wicket
Join the wicket community at irc.freenode.net: ##wicket
Wicket 1.2.6 contains a very important fix. Download Wicket now!
http://wicketframework.org

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to