An addendum to my earlier note, to file under "curiouser and curiouser":
If I implement PageDetachListener, everything works as expected --
even if my pageDetached() does nothing!
public abstract class MyPage
extends BasePage
implements PageDetachListener
{
// empty method is fix for bug in Tapestry 4.0b3
public void pageDetached(PageEvent event) { }
...
}
Wacky.
On Aug 8, 2005, at 12:17 PM, Paul Cantrell wrote:
I thought, what with the nifty annotations, that it should be
possible to eliminate .page files entirely in most if not all
cases, thus eliminating a major source of file clutter. Yay!
So I tried it, and found that my page properties were suddenly not
getting restored to their pristine state. Boo! For example, I have
this page with two transient properties...
public abstract class ArticleView
extends BasePage
implements PageAttachListener
{
public void pageAttached(PageEvent event)
{
System.out.println("--------------------> title = " +
getArticleTitle());
System.out.println("--------------------> body = " +
getArticleBody());
}
public void init(Article article)
{
setArticleTitle(article.getCurrentVersion().getTitle());
setArticleBody(article.getCurrentVersion().getBody());
}
public abstract String getArticleTitle();
protected abstract void setArticleTitle(String title);
public abstract String getArticleBody();
protected abstract void setArticleBody(String bodyText);
}
If I follow a @PageLink to ArticleView, I see title=null, body=null
-- the correct pristine state. I then populate the page in a
listener on another page that calls init(), and see the article
displayed correctly.
But if I then go back to the original @PageLink, the previously
displayed values, which should have been cleared to null, are still
there hanging around -- even in pageAttached()! The page object is
never returned to its pristine state.
If I create a .page file, then everything starts working as
expected -- my transient properties are correctly cleared for each
request:
<page-specification class="net.innig.imre.web.ArticleView">
<property name="articleTitle" />
<property name="articleBody" />
</page-specification>
But here's were it gets really weird. If I only specify *one* of
the two properties, like this:
<page-specification class="net.innig.imre.web.ArticleView">
<property name="articleTitle" />
</page-specification>
...then *both* properties get cleared. It looks like there's some
"reset page" hook that doesn't get called unless there is a .page
spec with at least one property in it.
This smells like a bug to me. Am I missing something here (see
sig)? I really shouldn't need any .page at all, and the app should
still behave correctly. At the very least, the presence of a spec
for one property shouldn't change the behavior of all the others.
I am using 4.0 beta 3.
Cheers,
Paul
_________________________________________________________________
"After hearing ten thousand explanations, a fool is no wiser.
But an intelligent person needs only two thousand five hundred."
-- Mahabharata
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
_________________________________________________________________
"Prediction is hard, especially of the future." -- Niels Bohr
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]