In your case, you dont need the InjectPage.

try this:

public String getPageLinkContext() {
       return "another";
   }

with regards
Sven Homburg
Founder of the Chenille Kit Project
http://chenillekit.codehaus.org




2010/5/19 Albert Tumanov <altum...@gmail.com>

> Dear Tapestry users,
>
> I do not understand what @InjectPage actually does, can somebody please
> help me.
> I've expected that @InjectPage should return a fresh page from the
> pool, so that I can use it e.g. for creating page links with needed
> parameters.
> But if I try to inject a page in the same page class, it actually
> injects "this" instead of a fresh page instance.
>
> Example:
> Say we have a Product page showing some product details.
> It also shows links to related products (link to the same page but
> with different parameter).
>
> public class Product {
>
>    private String name;
>
>    void onActivate(String param) {
>        this.name = param;
>    }
>
>    Object[] onPassivate() {
>        return new Object[] { name };
>    }
>
>    @InjectPage
>    private Product productPage;
>
>    // in real life this method could be in a separate component
>    public Object[] getPageLinkContext() {
>        System.out.println("this=" + this);
>        System.out.println("productPage=" + productPage);
>        productPage.setName("another");
>        return productPage.onPassivate();
>    }
>
>    public void setName(String name) {
>        this.name = name;
>    }
>
>    public String getName() {
>        return name;
>    }
> }
>
> Product.tml:
> <html t:type="layout" title="MyPage"
> xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd";
> xmlns:p="tapestry:parameter">
>    This product = ${name}
>    <t:pagelink page="Product" context="pageLinkContext">related
> product</t:pagelink>
>    This product = ${name}
> </html>
>
> What I expect is that value of "name" should not change after PageLink
> component have called the getPageLinkContext() method.
> But actual generated HTML is (for
> http://localhost:8080/myapp/product/initial):
>
>   This product = initial
>   <a href="/myapp/product/another">related product</a>
>   This product = another
>
> System output shows that the "productPage" is the same instance as "this":
>
> this=com.example.pages.prod...@90e1b2
> productpage=com.example.pages.prod...@90e1b2
>
> Is it the correct @InjectPage behaviour ?
> Am I doing something lame ?
>
> Thanks in advance,
> Albert
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>

Reply via email to