@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