@InjectPage is used to inject another page from the application into
the page containing the annotated field.

On Wed, May 19, 2010 at 1:19 AM, Sven Homburg <hombu...@googlemail.com> wrote:
> 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
>>
>>
>



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to